Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: alvaro22 en 23 Enero 2014, 16:05 PM

Título: invariante de clases y aserciones
Publicado por: 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
Título: Re: invariante de clases y aserciones
Publicado por: dato000 en 23 Enero 2014, 17:03 PM
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.
Título: Re: invariante de clases y aserciones
Publicado por: rir3760 en 23 Enero 2014, 17:09 PM
Cita de: dato000 en 23 Enero 2014, 17:03 PMinvariantes???? no te referiras a constantes?
Invariant (computer science) (http://en.wikipedia.org/wiki/Invariant_%28computer_science%29)
Class invariant (http://en.wikipedia.org/wiki/Class_invariant)

Un saludo
Título: Re: invariante de clases y aserciones
Publicado por: dato000 en 23 Enero 2014, 17:57 PM
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...
Título: Re: invariante de clases y aserciones
Publicado por: alvaro22 en 23 Enero 2014, 19:57 PM
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