1 / 14

POO en C++

POO en C++. Programación Orientada a Objetos. Declaración de clases con struct. Las clases en C++ pueden definirse utilizando la construcción struct Ejemplo: enum Boolean {false, true}; //false = 0, true = 1 struct Point{ int X; int Y; Boolean Visible; }

tale
Télécharger la présentation

POO en C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. POO en C++ Programación Orientada a Objetos

  2. Declaración de clases con struct Las clases en C++ pueden definirse utilizando la construcción struct Ejemplo: enum Boolean {false, true}; //false = 0, true = 1 struct Point{ int X; int Y; Boolean Visible; } Por omisión todos los miembros datos son públicos. Objetos de la clase Point. Point Origen; Point Row[80]; Point *point_ptr; point_ptr = &Origen; point_ptr = Row;

  3. Definición de métodos Los métodos pueden definirse dentro o fuera de la clase Ejemplo dentro de la clase struct Point{ int X; int Y; Boolean Visible; int GetX(){return X;} //función en línea (in line) } Ejemplo fuera de la clase struct Point{ int X; int Y; Boolean Visible; int GetX(); } Point::GetX(){return X;}

  4. Invocación de métodos (mensajes) Para invocar a los métodos es necesario crear un objeto de la clase (instanciar) y enviarle mensajes. El formato es nombre-objeto.función-miembro(argumentos) Ejemplo Point EstePunto; EstePunto.X = 17; EstePunto.Y = 42; EstePunto.Visible = true; xx = EstePunto.GetX();

  5. Constructores Es conveniente iniciar los objetos con valores de los miembros dato bien definidos. Un constructor tiene por objeto iniciar los valores de los miembros datos adecuadamente. Los constructores en C++ son métodos que tienen el mismo nombre que la clase a que pertenecen. struct Point{ int X; int Y; Boolean Visible; int GetX(){return X;} Point(int NewX, int NewY); //constructor } Point::Point(int NewX, int NewY){ X = NewX; Y = NewY; }

  6. Valores por defecto En C pueden declararse métodos con parámetros con valores por defecto. De esta manera no es necesario especificar todos los argumentos al invocar un método. struct Point{ int X; int Y; Boolean Visible; int GetX(){return X;} Point(int NewX, int NewY); //constructor } Point::Point(int NewX = 0, int NewY = 0){ X = NewX; Y = NewY; } Point Origen(1,1); //X = 1, Y = 1 Point EstePunto(3); //X = 3, Y = 0 Point AquelPunto(); //X = 0, Y = 0

  7. Control de acceso a miembros C++ provee tres modificadores de acceso a miembros, como se resume en la siguiente tabla:

  8. Ejemplo de control de acceso struct Point{ private: int X; int Y; Boolean Visible; public: int GetX(){return X;} Point(int NewX, int NewY); //constructor } Point EstePunto(); EstePunto.X = 5; //ERROR xx = EstePunto.GetX(); //ACEPTABLE

  9. Declaración mediante class Las clases en C++ pueden definirse utilizando la construcción class Ejemplo: enum Boolean {false, true}; //false = 0, true = 1 class Point{ int X; int Y; Boolean Visible; public: int GetX(); Point(int NewX, int NewY); } Por omisión todos los miembros datos son privados.

  10. La clase Point #include <iostream.h> // necesaria para I/O #include <conio.h> class Point { // define clase Point int X; // X y Y son privados por omisión int Y; public: Point(int InitX, int InitY) {X = InitX; Y = InitY;} int GetX() {return X;} // funciones miembro públicas int GetY() {return Y;} }; int main() { int YourX, YourY; cout << "Set X coordinate: "; // solicitud cin >> YourX; // entrada de YourX cout << "Set Y coordinate: "; // otra solicitud cin >> YourY; // entrada de YourY // llamada al constructor Point YourPoint(YourX, YourY); // llamada a función miembro cout << "X is " << YourPoint.GetX(); cout << '\n'; // salto de línea // llamada a función miembro cout << "Y is " << YourPoint.GetY(); cout << '\n'; getch(); //espera carácter return 0; }

  11. Herencia Redefinición de la clase Point (archivo Point.h de encabezado) class Location { protected: // permite a clases derivadas acceder datos privados int X; int Y; public://estas funciones pueden accederse desde fuera Location(int InitX, int InitY); int GetX(); int GetY(); }; class Point : public Location{//derivada de Location // derivación pública indica que X y Y son protegidos // dentro de Point protected: Boolean Visible;// las clases derivadas de Point // necesitarán acceso public: Point(int InitX, int InitY); // constructor void Show(); void Hide(); Boolean IsVisible(); void MoveTo(int NewX, int NewY); };

  12. Acceso en clases

  13. Archivo de implementación // funciones miembro de la clase Point: Estas suponen // que el programa principal inicia las gráficas Point::Point(int InitX, int InitY) : Location(InitX,InitY) { Visible = false; // la hace invisible por default }; void Point::Show(void) { Visible = true; putpixel(X, Y, getcolor()); // usa el color default }; void Point::Hide(void) { Visible = false; // uses color de fondo para borrar putpixel(X, Y, getbkcolor()); }; Boolean Point::IsVisible(void) { return Visible; }; void Point::MoveTo(int NewX, int NewY) { Hide(); // hace el punto invisible X = NewX; // cambia X y Y a una nueva posición Y = NewY; Show(); // muestra el punto en la nueva posición }; Archivo de implementación de las clases Location y Point (archivo Point2.cpp) invoca constructor de Location #include "point.h" #include <graphics.h> // funciones miembro de la clase // Location Location::Location(int InitX, int InitY) { X = InitX; Y = InitY; }; int Location::GetX(void) { return X; }; int Location::GetY(void) { return Y; };

  14. Programa de ejemplo #include <graphics.h> // Biblioteca gráfica #include <conio.h> // para getch() #include "point.h" // declaraciones de Point y Location int main() { // inicia el sistema gráfico int graphdriver = DETECT, graphmode; initgraph(&graphdriver, &graphmode, "..\\bgi"); // Mueve un punto a través de la pantalla Point APoint(100, 50); // Inicia X, Y a 100, 50 APoint.Show(); // APoint semuestra getch(); // espera una tecla APoint.MoveTo(300, 150); // APoint se mueve a 300,150 getch(); // espera una tecla APoint.Hide(); // APoint se oculta getch(); // espera una tecla closegraph(); // Restaura pantalla original return 0; }

More Related