Clases Y Objetos

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Clases Y Objetos as PDF for free.

More details

  • Words: 3,381
  • Pages: 17
TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA

TEMA: CLASES 1 Clases y Objetos 2 Fundamentos de Clases 2.1 Resolución de ámbito 2.2 Acceso a la funciones 2.3 Ejemplo 3 Miembros de una clase (métodos y atributos) 4 Visibilidad de los miembros de una clase 5 Subclases 6 Herencia 6.1 Herencia por extensión 7 Constructores 8 Destructores 9 Proyecto final 9.1 manual técnico 9.2 manual de usuario

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA 1.-Clases y Objetos Este capitulo introduce a las clases en C++. La clase es la fundación de C++ para el soporte de la programación orientada a objetos, y se encuentra en el núcleo de muchas de sus más avanzadas características. La clase es la unidad básica de C++ de la encapsulación y esta provee el mecanismo por el cual los objetos son creados. 2.0-Fundamentos de Clases Vamos a comenzar definiendo los términos de clase y objeto. Una clase define un nuevo tipo de dato que especifica la forma de un objeto. Una clase incluye los datos y el código que operarán sobre esos datos. Además, una clase enlaza datos y código. C++ usa una especificación de una clase para construir objetos. Los objetos son instancias de una clase. Además, una clase es esencialmente un serie de planes que especifican cómo construir un objeto. Es importante estar claro en algo: Una clase es una abstracción lógica. No es hasta que un objeto de esa clase sea creado que la representación física de la clase existe en la memoria. Cuando se define una clase, se declaran los datos que ésta contiene y el código que opera en esos datos. Aunque clases muy simples pueden contener solo código o solo datos, la mayoría de las clases en realidad contienen ambos. En conjunto con una clase, los datos se almacenan en las variables y el código en las funciones. Colectivamente, las funciones y variables que constituyen una clase son llamados 'miembros' de la clase. Una variable declarada dentro de una clase es llamada 'variable miembro', y una función declarada en una clase es llamada 'función miembro'. En ocasiones el termino 'variable de instancia' es usado en lugar de variable miembro.

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA Una clase es creada con la palabra clave class. La declaración de una clase es similar sintácticamente a una estructura ( y tienen muchísimo que ver ). Aqui tenemos un ejemplo. La siguente clase define un tipo llamado alumno. // Esto crea la clase alumno class alumno { char nombre[25];//variable miembro public: void pide_nombre();//funcion miembro }; Veamos mas de cerca esta declaración de la clase. Una clase puede contener miebros privados asi como públicos. Por defecto, todos los elementos definidos en una clase son privados. Por ejemplo la variable nombre es privada. Esto significa que solo puede ser accesada por otros miembros de la clase alumno, y no por alguna otra parte del programa. Esta es una forma de como la encapsulación se logra, se puede controlar el acceso a ciertos elementos de datos manteniendolos privados. Aunque no hay ninguna en este ejemplo, se pueden definir funciones privadas, las cuales pueden ser llamadas solamente por otros miembros de la clase.

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA Para hacer pública una parte de la clase ( accesible a otras partes del programa ) se deben declarar con la palabra clave public. Todas las variables o funciones definidas después de la declaración pública son accesibles por todas las demas funciones en el programa. En nuestra clase alumno, la función pide_nombre() es pública. Tipicamente, su programa accesará los miembros privados de una clase a través de sus funciones públicas. Note que la palabra clave public es seguida con : . Mantenga en mente que un objeto forma una relación entre código y datos. Una función miembro tiene acceso a los elementos privados de su clase. Esto significa que pide_datos() tiene acceso a nombre en nuestro ejemplo. Para añadir una función miembro a la clase, debe espcificar su prototipo en la definición de la misma. Una vez que se ha definido una clase, se puede crear un objeto de ese tipo usando el nombre de la clase. El nombre de la clase se convierte en un especificador del nuevo tipo. Por ejemplo la siguiente declaración crea 2 objetos llamados alumno1 y alumno2 del tipo alumno.

alumno alumno1, alumno2;//nombre de la clase creación de los objetos Cuando un objeto de la clase es creado, este tendra su propia copia de las variables miembros que contiene la clase. Esto significa que alumno1 y alumno 2 tendrán su propia y separado copia de nombre. Además los datos asociados con alumno 1 son distintos y separados de los datos asociados con alumno 2.

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA Recordemos: En c++, una clase es un nuevo tipo de dato que puede ser usado para crear objetos. Especificamente, una clase crea una consistencia lógica que define una relación entre sus miembros. Cuando se declara una variable de una clase, se está creando un objeto. Un objeto tiene existencia física, y es una instancia específica de una clase. ( Esto es, un objeto ocupa espacio de memoria, pero una definición de tipo no ). Además, cada objeto de una clase tiene su propia copia de los datos definidos dentro de esa clase. Dentro de la declaración de alumno, el prototipo de una función es especificado. Ya que las funciones miembros son prototipadas dentro de la definicion de la clase, no necesitan ser prototipadas en otro lugar cualquiera. Para implementar una función que es un miembro de una clase, debe indicarle al compilador a cual clase pertenece la función calificando el nombre de la función con el nombre de la clase. Por ejemplo, esta es una manera de codificar la función pide_nombre(). void alumno::pide_nombre() { Cout<<”dame tu nombre”; Cin>>nom; } 2.1.-Resolución de ámbito El :: es llamado el operador de resolución de ámbito. Esencialmente le dice al compilador que esta versión de pide_nombre() pertenece a la clase alumno. EL compilador sabe cuál función pertenece a cual clase y esto es posible por el operador de resolución de ámbito y el nombre de la clase. v 2.2.-Acceso a la funciones NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA Las funciones miembros de una clase solo pueden ser llamadas relativas a un objeto específico. Para llamar a una función miembro desde alguna parte del programa que se encuentre fuera de la clase, se debe usar el nombre del objeto y el operador de direcionamiento '.' ( punto ). Por ejemplo, lo siguiente llama a pide_nombre() en el objeto objeto1. alumno objeto1, objeto2; objeto1.pide_nombre(); La invocación de objeto1. pide_nombre( () causa a pide_nombre( () operar en los datos de la copia de objeto1. Mantenga en mente que objeto1 y objeto2 son 2 objetos separados. Esto significa, por ejemplo, que inicializar objeto1 no causa que objeto2 sea inicializado, La única relación que objeto1 tiene con objeto2 es que es un objeto del mismo tipo. Cuando una función miembro llama a otra función miembro de la misma clase, puede hacerlo directamente, sin usar un objeto y el operador '.' En este caso, el compilador ya conoce en cuál objeto se está operando. Solamente cuando una función miembro es llamada por código que se encuentra fuera de la clase es cuando debe utilizarse el nombre del objeto y el operador '.' Por la misma razón, una función miembro puede referirse directamente a una variable miembro, pero código fuera de la clase debe referenciarse a la variable a través de un objeto y el operador '.' 3.0.-Miembros de una clase ( métodos y atributos ) En el lenguaje coloquial de la programación orientada al objeto es común escuchar términos tales como: métodos, atributos, herencia, polimorfismo, etc. En esta sección nos encargaremos de hablar de los dos primeros. Métodos:

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA En comparación con la programación tradicional, un método es lo mismo que una función cualquiera, salvo que como los métodos se declaran para pertenecer a una clase específica, se dice que todos los métodos de dicha clase son miembros de la misma. Por lo demás, la declaración y definición de los métodos es exactamente igual que declarar y definir cualquier otra función. Atributos: En comparación con la programación tradicional, un atributo es lo mismo que una variable cualquiera, salvo que como los atributos se declaran para pertenecer a una clase específica, se dice que todos los atributos de dicha clase son miembros de la misma. Por lo demás, la declaración de los atributos es exactamente igual que declarar cualquier otra variable. Miembros: A partir de este momento usaremos la palabra miembro para referirnos al hecho de que un método o un atributo pertenece a tal o cual clase. 4.0.-Visibilidad de los miembros de una clase Por visibilidad se entiende al acto de acceder a los miembros de una clase. En este sentido, los miembros de una clase pueden ser: públicos, privados y protegidos. Un miembro público significa que el acceso al mismo puede darse dentro del interior de la clase, dentro de una subclase, y desde un objeto instanciado de cualquiera de estas. Por ejemplo, los miembros de la clase alumno son accesibles dentro de la misma y podrán accederse desde cualquier otra clase que se derive de alumno, asi como desde cualquier objeto instanciado de estas.

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA Un miembro privado significa que el acceso al mismo puede darse solamente dentro del interior de la clase que lo posee. Normalmente, el programador creador de una clase declara a los atributos de la clase como privados y a los métodos como públicos, esto con la idea de que el usuario de la clase no pueda tener acceso a los atributos sino es a travez de los métodos definidos para el caso. Un miembro protegido se comporta de manera parecida a un miembro privado, salvo que estos son accesibles dentro de la clase que lo posee y desde las clases derivadas, pero no desde los objetos instanciados a raiz de dichas clases. Nota: por defecto, los miembros de una clase son privados. 5.0.-Subclases Una subclase es una clase que se deriva de otra. La clase que sirve de base suele conocerse como parent (padre), y a la subclase se le llama child (hija). En C++ cada clase que es creada se convierte en candidata para servir de base de donde se deriven otras. Por ejemplo, la clase Pareja es candidata para convertirse en la base para las subclases Suma, Resta, Multiplica, Divide, y otras posibles subclases en donde se utilice un par de valores numéricos. Para poner un ejemplo, pensemos en que deseamos crear la clase Suma, misma que será utilizada para obtener la suma de dos números. Puesto que la clase Pareja posee dos atributos númericos puede ser usada como base para la clase que estamos proyectando. Así, el siguiente ejemplo se constituye en un caso de clases derivadas. Nota: Observe que la sintaxis para crear una subclase es: class hija : [public | private] padre { ... }; NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA Donde padre es la clase base e hija es la subclase. ejemplo class Suma : public Pareja { // atributos de Suma double resultado; public: // métodos de Suma double calcular(); }; 6.0.-Herencia La herencia es uno de los mecanismos más útiles de la programación orientada al objeto, ya que por medio de la misma se puede llevar a cabo la reutilización de código. Es decir, puesto que toda clase definida se convierte en candidata para ser usada como base de donde se deriven otras, esto da como resultado que las clases derivadas hereden todos los miembros de la clase alumno.

6.1.-Herencia por extensión

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA

Herencia Al tipo de diagrama mostrado arriba (Herencia por extensión) se le conoce como UML [1] y es utilizado para mostrar de forma grafica la relación existente entre una clase hija con la clase padre. En el caso del ejemplo, se muestra que la clase Suma es una extensión de la clase Pareja y, en consecuencia, Suma posee a los miembros { a, b, getA(), getB(), setA(), setB() } heredados de la clase Pareja. Observe como la clase Suma posee otros dos miembros no heredados, { resultado, y calcular() }, y es precisamente a este tipo de situación por lo que se dice que Suma es una extensión de Pareja, ya que Suma, además de poseer a todos los miembros de Pareja, se extiende para poseer otros dos miembros.

7.0.-Constructores

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA Un constructor es un método que pertenece a una clase y el mismo (en C++) debe tener el mismo nombre de la clase a la que pertenece. A diferencia de los otros métodos de la clase, un constructor deberá ser del tipo void, es decir, el mismo no regresará valor alguno. Una clase puede tener más de un método constructor. Cada clase debe tener al menos un constructor, tanto así que si el programador creador de una clase no define un metodo constructor para la misma, el sistema, osea el compilador, creara de manera automatica un constructor nulo. El objetivo principal del constructor es el de establecer las condiciones necesarias dentro de la memoria y crear una copia del objeto mismo dentro de la memoria. Los consturctores suelen usarse para la inicialización de los atributos de los objetos instanciados. Por ejemplo, con las instrucciones: Suma s; s.setA(80); s.setB(100);

8.0.-Destructores Un destructor es un método que pertenece a una clase y el mismo (en C++) debe tener el mismo nombre de la clase a la que pertenece. A diferencia de los otros métodos de la clase, un destructor deberá ser del tipo void, es decir, el mismo no regresará valor alguno. Para diferenciar a un método destructor de un método constructor, al nombre del destructor se le debe anteponer el caracter ~ (Alt + 126). El objetivo principal del destructor es el de retirar de la memoria al objeto, o sea, el destructor hace todo lo contrario que el constructor.

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA Los destructores suelen usarse para liberar memoria que haya sido solicitada por el objeto a travez de las ordenes malloc(), new, etc. En tales casos se deberá incluir dentro del método destructor la orden free, delete, etc., según sea el caso.

9.0.-proyecto final(programa ) 9.1.-.-Manual tecnico /* programa que pide los datos del alumno utilizando una clase base en donde va a heredar en la clase materias en la cual pide las calificaiones del alumno obteniendo el promedio asi como mostrar como les fue su promedio*/ #include #include<stdio.h> #include class alumno//creamos la clase base alumno { protected://porque vamos a heredar la clase char nombre[25];//variables miembros char grupo[10]; int boleta; public://puede ser aplicado en cualquier parte del programa void pedir_datos();//funciones miembros void imprime_datos(); alumno();//constructor }; void alumno::pedir_datos() //definimos la funcion pedir datos { //recordemos que para definir fuera de la clase primero se pone el tipo cout<<"Dame tu nombre completo\n";//de dato luego se pone el nombre de la gets(nombre); //clase el operador de ambito :: y por ultimo el nombre de la cout<<"Dame tu grupo\n";//funcion NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA cin>>grupo; //en este caso en esta funcion pedir datos solo pide los datos cout<<"Dame tu numero de boleta\n";//al usuario cin>>boleta; } void alumno::imprime_datos()//en esta funcion imprime todos los datos {//de la funcion pedir datos cout<<"Datos capturados del alumno\n"; cout<<"Nombre:"<<nombre<<endl; cout<<"Grupo:"<>vc; NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA cout<<"Dame la calificacion final de la materia transformadas\n"; cin>>tran; cout<<"Dame la calificacion final de la materia circuitos de cd y ca\n"; cin>>cir; cout<<"Dame la calificacion final de la materia campos electromagneticos\n"; cin>>cam; cout<<"Dame la calificacion final de la materia ondas\n"; cin>>ond; cout<<"Dame la calificacion final de la materia base de datos\n"; cin>>bas; } void materias::calculo() //en esta funcion hace los calculos e imprime los { // resultados float prom; prom=(vc+tran+cir+cam+ond+bas)/(6); cout<<"Las calificaciones capturados son"; cout<<"\nVariable compleja:"; cout<=8) { cout<<"\nPasaste muy bien te mereces unas vacaciones\n"; } else if(prom>=6) { cout<<"\nPasaste ponte a estudiar un poco mas\n"; NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA } else cout<<"\nReprobaste ponte a estudiar\n"; } void main() //funcion principal { materias z; //declaramos la variable z de tipo materias recordemos que materias clrscr();//es de tipo class materias z.pedir_datos();//para invocar o llamar las funciones se pone primero la variable z z.datos();//que ya dijimos que es de tipo class materia el punto luego las funciones clrscr(); z.imprime_datos();//tambien podemos invocar las demas funciones de la class alumno getch(); clrscr(); z.calculo(); //recordemos que heredo la clase alumno a materias getch(); //esto quiere decir es como tener una sola clase } 9.2.-Manual de usuario Como vemos en la pantalla al ejecutar nos pide ingresar los datos del alumno así como las calificaciones.

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA

En cuando le demos enter aparecera los datos capturados del alumno como se muestra la pantalla.

En cuando le demos enter aparecera otra pantalla que muestra las calificaciones capturadas asi como su promedio y el empeño del alumno si el alumno tiene un promedio de 10, 9, y 8 mostrara un mensaje “pasaste muy bien te mereces unas vacaciones” si es 7 o 6 mostrara “pasaste estudia un poco mas” como se muestra la pantalla.

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

TEMA CLASES ESTRUCTURA Y BASE DE DATOS PROFESORA: CORTES HERNÁNDEZ LILIA

NOMBRE DE LOS INTEGRANTES: MUÑOZ IBARRA ERIC RODRIGO HERNÁNDEZ CARMONA DIDIER JORDÁN FUENTES REYES GUILLERMO MOISES GRUPO: 3CV4

Related Documents

Clases Y Objetos
May 2020 9
Clases Y Objetos
October 2019 15
Clases Y Objetos
June 2020 11
Clases Y ..
July 2020 9