invariante de clases y aserciones

Iniciado por alvaro22, 23 Enero 2014, 16:05 PM

0 Miembros y 1 Visitante están viendo este tema.

alvaro22

Buenas, he estado buscando por internet pero no me queda muy claro, alguien sabria decirme un ejemplo de una clase y su invariante sin codificarlo simplemente describirlo. Y definicion de aserciones en c++?

Gracias. Un saludo

dato000

Cita de: alvaro22 en 23 Enero 2014, 16:05 PM
Buenas, he estado buscando por internet pero no me queda muy claro, alguien sabria decirme un ejemplo de una clase y su invariante sin codificarlo simplemente describirlo. Y definicion de aserciones en c++?

Gracias. Un saludo

que????? invariantes???? no te referiras a constantes???? un ejemplo de una clase es cualquier cosa: por ejemplo:

Código (cpp) [Seleccionar]

/*
    Desarrollar un programa que permita registrar los datos de una serie
    de productos que se venden en un almacén (código, nombre, marca, precio).
    Se desea listar los productos cuyo precio sea mayor a 5000 Bsf. y aquellos
    cuyo precio sea menor o igual a 5000 Bsf.
*/

#include <iostream>
#include <string>
#include <cstdio>

using namespace std;


class producto {
    public:
        //atributos
        float precio;
        int codigo;
        string marca, nombre;

        //procedimientos
        void leer();
        void imprimir();
        int precios(int precio);
};

int producto::precios(int precio)
{
    if(precio <= 5000)
    {
        return 0;
    }
    else // precio > 5000
    {
        return 1;
    }
}

void producto :: leer(){
    cout<<"introduzca el nombre del producto:  ";
    cin>>nombre;
    //cout<<"introduzca el codigo del producto:  ";
    //cin>>codigo;
    cout<<"introduzca el precio del producto:  ";
    cin>>precio;
    //cout<<"introduzca la marca del producto:  ";
    //cin>>marca;
}

void producto :: imprimir(){

    //cout << "PRECIOS MENORES O IGUALES A 5000" << endl << endl;
    if(precios(precio) == 0) // es menor o igual a 5000
    {
        cout << "Nombre del producto:  " << nombre << endl;
        cout << "Precio del producto:  " << precio << endl;
    }
    else if (precios(precio) == 1) // es mayor a 5000
    {
        cout << "Nombre del producto:  " << nombre << endl;
        cout << "Precio del producto:  " << precio << endl;
        cout << "El precio es mayor a 5000." << endl << endl;
    }
}



int main()

{
    int op;
    producto auto1;
    auto1.leer();
    auto1.imprimir();

    getchar();
    return(0);
}



Es el ejercicio de un chico que posteo hace poco una duda, ahi tienes una clase y su funcionamiento, pero pues no se sabe que es lo que pides, así que no se como ayudarte.



rir3760

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

dato000

Pues no lo termino de entender...se trata de como los posibles valores verdaderos de una sentencia, validos para empezar y terminar una función?? en las clases es algo aún más confuso...



alvaro22

Buenas, gracias por las respuestas, si algo así pero no lo comprendo lo he leido en español y no lo consigo entender,se supone que cada clase puede tener su invariante... :S