Ral Chapa Rodrigo Cabrera Sebastin Caldern Andrs Mcvey Carolina Cornejo Nicols Sigala Macarena Burdiles OBJETO 3 El concepto de objeto puede extenderse prcticamente a cualquier cosa, tanto real como ficticia o imaginaria. En el contexto de la programacin Orientada a Objetos, se refiere a algo que posea estado, comportamiento e identidad. Su estado y comportamiento se definen en una clase comn. Por tanto, una clase podra tener muchos objetos de su tipo, pero sin embargo un objeto solo podr pertenecer a una clase. CLASE 4 Se trata de realizar una abstraccin denominada clase, esta permite la agrupacin de objetos que comparten las mismas propiedades y comportamiento. No se debe olvidar que la clase es una generalizacin de objeto. Vehculo Punto Figura Animal (1,3) (2,2) (2,1) (5,2.5) Las clases y los objetos estn en todas partes HERENCIA Es la derivacin de una clase a partir de otra existente. Otras formas de decirlo son heredar la clase o extender la clase. El objetivo es la reutilizacin del software desarrollado. La herencia aplica en relaciones de naturaleza B es un tipo de A De esta manera se pueden generar clases ms especializadas a partir de las ya existentes. 6 HERENCIA 7 public class Persona {
private String rut; private String nombre;
public void setRut(String r){ rut = r; } public String getRut(){ return rut; } public void setNombre(String n){ nombre = n; } public String getNombre(){ return nombre; } } public class Alumno{ private String rut; private String nombre; private String rolUCV;
public void setRut(String r){ rut = r; } public String getRut(){ return rut; } public void setNombre(String n){ nombre = n; } public String getNombre(){ return nombre; } public void setRolUCV(String r){ rolUCV = r; } public String getRolUCV(){ return rolUCV; } } Alumno es un tipo de Persona. Se podra aplicar herencia y as ahorrar cdigo, reutilizando la clase Persona. Alumno sera una especializacin de Persona. SUPERCLASES Y SUBCLASES Una clase derivada de otra clase recibe tambin el nombre de subclase o clase hija. La clase de la cual se deriva una subclase se denomina clase base, superclase o clase padre. 8 Superclase Clase base Clase padre Subclase Clase derivada Clase hija Vehculos de carga Camin HERENCIA SIMPLE Una clase es subclase de una nica superclase. 9 Vehculos de carga Camin HERENCIA MLTIPLE Una clase es subclase de ms de una superclase. 10 Vehculos terrestres Vehculos anfibios Vehculos acuticos JERARQUAS DE HERENCIA La herencia organiza clases bases y derivadas en jerarquas de clases.
Una subclase hereda las propiedades de la respectiva superclase.
Una subclase, respecto de su superclase: Agrega nuevas propiedades Modifica propiedades heredadas 11 IMPLEMENTACIN DE JERARQUAS DE HERENCIA Ejemplo: EI I - 1 4 7 I NT ROD. T . I . 12 Persona Alumno Atributos: - RUT - Nombre
Operaciones: -set y get RUT - set y get Nombre
Atributos: - RUT - Nombre - Rol UCV
Operaciones: -set y get RUT - set y get Nombre - set y get Rol UCV ABUSO DE HERENCIA AGREGADO CONFUNDIDO: Supongamos que se quiere representar un avin y sus componentes. Una forma podra ser: 13 Avin
Motor
Cola
Ala
Fuselaje
Si se lee el diagrama tal como est, dice que Cola es un tipo de Avin y tambin que Ala es un tipo de Avin. Esto est malo. ABUSOS DE HERENCIA: AGREGADO CONFUNDIDO Otra forma para representar al avin podra ser: 14 Motor
Cola
Ala
Fuselaje
Avin
Aqu se muestra la herencia mltiple como otra forma de solucin. El diagrama dice que un Avin es simultneamente un tipo de Ala, un tipo de Cola, un tipo de Motor, y un tipo de Fuselaje. Y esto est malo. ABUSOS DE HERENCIA: AGREGADO CONFUNDIDO En realidad, el diseador ha confundido los conceptos herencia de clase y composicin de objetos. Un avin se compone de: dos Alas, un Motor, un Fuselaje y una cola. EI I - 1 4 7 I NT ROD. T . I . 15 Avin Motor Ala Fuselaje Cola Avin alaIzq, alaDer: Ala cola: Cola motor: Motor fuselaje: Fuselaje
ABUSOS DE HERENCIA: JERARQUA INVERTIDA Supongamos que se quiere representar una jerarqua con los 3 tipos de cargos en una empresa. Una posible forma sera: 16 Director Administrador Empleado Ms bien parece un organigrama. Un empleado no es un tipo de Administrador, sino que al revs, as como un Administrador no es un tipo de Director. Esto est malo. La solucin es invertir la jerarqua, pues Empleado es la clase ms general. TIPOS DE HERENCIA 17 Especializacin Generalizacin POLIMORFISMO QU ES POLIMORFISMO? El polimorfismo se refiere a la capacidad para que varias clases derivadas de una antecesora utilicen un mismo mtodo de forma diferente. 19 EJEMPLO Tenemos: Clase: Mamferos Operacin: Comer Subclase1: Vaca Subclase 2: Len Ambas clases realizan la operacin comer pero de manera distinta EJEMPLO CDIGO using namespace std;
class figura { private: float base; float altura; public: void captura(); virtual unsigned float perimetro()=0; virtual unsigned float area()=0; };
class rectangulo: public figura{ public: void imprime(); unsigned float perimetro(){return 2*(base+altura);} unsigned float area(){return base*altura;} };
class triangulo: public figura{ public: void muestra(); unsigned float perimetro(){return 2*altura+base} unsigned float area(){return (base*altura)/2;} };
void figura::captura(){ cout<<"CALCULO DEL AREA Y PERIMETRO DE UN TRIANGULO ISSCELES Y UN RECTANGULO:" <<endl; cout<<"escribe la altura: "; cin>>altura; cout<<"escribe la base: "; cin>>base; cout<<"EL PERIMETRO ES:" << perimetro(); cout<<"EL AREA ES:" << area(); };
21 CLASES DE POLIMORFISMO Polimorfismo Paramtrico: Es aqul en el que el cdigo no incluye ningn tipo de especificacin sobre el tipo de datos sobre el que se trabaja.
Polimorfismo Ad-Hoc: Es aqul en el que los tipos a los que se aplica el polimorfismo deben ser explicados y declarados uno por uno antes de poder ser utilizados.
22 FUNCIONES POLIMRFICAS Y TIPOS POLIMRFICOS El concepto de polimorfismo puede ser aplicado tanto a funciones como a tipos de datos. As es como nacen los conceptos de funciones polimrficas junto con los tipos polimrficos.
Las funciones polimrficas son aquellas que pueden ser evaluadas o ser aplicadas en diferentes tipos de datos de manera indistinta.
Los tipos polimrficos son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no est especificado.
23 NO CONFUNDIRSE CON SOBRECARGA
La sobrecarga se da siempre dentro de una sola clase, mientras que el polimorfismo se da entre clases distintas.
Un mtodo est sobrecargado si dentro de una clase existen dos o ms declaraciones de dicho mtodo con el mismo nombre pero con parmetros distintos.
La sobrecarga se resuelve en tiempo de compilacin utilizando los nombres de los mtodos y los tipos de sus parmetros; el polimorfismo se resuelve en tiempo de ejecucin del programa, esto es, mientras se ejecuta, en funcin de que clase pertenece un objeto.