Clase 7 - Web del Profesor

Anuncio
Programación 2
Universidad de Los Andes
Escuela de Ingeniería de Sistemas
Departamento de Computación
Programación OxO. Herencia.
Polimorfismo. Composición
Programación OxO
Paradigma de programación
Programas estructurados en
objetos.
25/07/16
S. Solé - Programación 2
torno
a
2
Programación OxO
Fundamentos:
Abstracción
● Encapsulamiento
● Modularidad
● Herencia
● Polimorfismo
● Composición
●
25/07/16
S. Solé - Programación 2
3
Clases y objetos
Una clase describe a un conjunto de objetos
del mismo tipo (tienen las mismas
propiedades).
● Un
objeto es una entidad que tiene
características y acciones. Es una abstracción
de la realidad. Encapsula sus atributos y
servicios.
● Un objeto es una instancia de una clase
●
25/07/16
S. Solé - Programación 2
4
Objeto
Identidad
●
Todo objeto tiene un (o varios) atributo que
permiten identificarlo como ente único.
Estado
●
Valores de sus atributos en un momento
determinado
Comportamiento
●
Viene dado por sus métodos que indican como
se comporta el objeto cuando se invocan.
25/07/16
S. Solé - Programación 2
5
Comunicación entre objetos
Pase de mensajes
Un mensaje es la petición que hace un objeto
a otro para ejecutar alguno de sus métodos o
solicitar el valor de alguno de sus atributos
públicos.
nombreObjeto.nombreMétodo(lista de
parámetros)
25/07/16
S. Solé - Programación 2
6
Tipos de métodos
●
Constructor
paramétrico)
(por
●
Destructor
●
Observadores
●
Transformadores
25/07/16
omisión,
S. Solé - Programación 2
de
copia,
7
Constructor paramétrico
class NumeroComplejo
{
double real, imaginario;
public:
NumeroComplejo(double r, double i)
{
this->real = r;
this->imaginario = i;
};
};
25/07/16
S. Solé - Programación 2
8
Relaciones entre clases
●
Agregación
Forma parte de
●
Composición
Es parte elemental de
●
Herencia
Es un
●
Asociación
Usa a
25/07/16
S. Solé - Programación 2
9
Herencia
Superclase /
Clase base
Vehiculo
Moto
Carro
Bus
Subclases /
Clases derivadas
Especialización /
Generalización
25/07/16
S. Solé - Programación 2
10
Herencia simple
Vehiculo
Moto
25/07/16
Carro
La clase
derivada hereda
de una sola
clase base
Bus
S. Solé - Programación 2
11
Herencia múltiple
A
C
La clase
derivada hereda
de varias clases
bases
D
25/07/16
S. Solé - Programación 2
12
Herencia en C++
#include "vehiculo.h"
class Vehiculo {
int caballosFuerza;
class Carro: public Vehiculo {
int numeroPuertas;
public:
Carro();
~Carro();
int verNumPuertas() const;
void asignarNumPuertas(int);
int verSerialMotor() const ;
void asignarSerialMotor(int);
};
25/07/16
public:
Vehiculo();
~Vehiculo();
int verCF() const;
void asignarCF(int);
};
S. Solé - Programación 2
13
Herencia en C++
●
●
Pública: clase derivada puede acceder solo a los
miembros públicos y protegidos de la clase base (no a los
miembros privados). El usuario de la clase derivada tiene
el acceso sólo a los miembros públicos. Útil para
polimorfismo (se hereda la interfaz).
Privada: es el valor por omisión si el programador no
coloca nada. La clase derivada puede acceder sólo a
miembros públicos y protegidos de la clase base. El
usuario de la clase derivada no puede acceder a
miembros públicos de la clase base. Adecuada para
reutilizar código.
25/07/16
S. Solé - Programación 2
14
Herencia en C++
Acceso a
miembros de
la clase base
Tipos de herencia
pública
protegida
privada
público
Públicos en la clase
derivada
Protegidos en la
clase derivada
Ocultos en la clase
derivada
protegido
Protegidos en la
clase derivada
Protegidos en la
clase derivada
Ocultos en la clase
derivada
privado
Privados en la clase Privados en la clase Ocultos en la clase
derivada
derivada
derivada
25/07/16
S. Solé - Programación 2
15
Herencia múltiple en C++
#include "padre.h"
#include "madre.h"
class Hijo: public Padre, public Madre {
public:
Hijo();
~Hijo();
};
25/07/16
S. Solé - Programación 2
16
Composición/Agregación
Vehiculo
Motor
Motor es un atributo privado/público
de la clase Vehiculo
25/07/16
S. Solé - Programación 2
17
Asociación
Persona
Carro
Una persona usa un carro.
Esta relación ocurre cuando un objeto Persona
llama a un miembro no privado del objeto Carro,
mediante un apuntador, una referencia o el
nombre del objeto
25/07/16
S. Solé - Programación 2
18
Funciones virtuales
●
Permiten declarar funciones dentro de una
clase base que luego se redefinen en cada
clase derivada.
Polimorfismo
class Numero
{
public:
virtual int sumar(int, int);
}
25/07/16
S. Solé - Programación 2
19
Clase abstracta
●
A partir de ella se pueden derivar otras clases.
●
No puede instanciar objetos
●
Es útil como modelo o patrón para crear clases.
●
En C++ es aquella clase que tiene al menos una
función virtual pura
virtual int sumar(int, int)=0;
25/07/16
S. Solé - Programación 2
20
Descargar