poo
DESCRIPTION
Programación Orientada a ObjetosTRANSCRIPT
Lic. Yamila Bolívar, concurso 2007
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
INTRODUCCIÓNINTRODUCCIÓN
La POO
-Representa un enfoque nuevo
- Descripción de los objetos que se manipularán
- Se deben identificar las clases y el enfoque en que estas interactuarán
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
OBJETIVOOBJETIVO
Aplicar conceptos y funciones de la Programación
Orientada a Objetos (POO), apreciando su
efectividad en el mantenimiento y reutilización de
componentes (objetos, mensajes, métodos y
clases) y, en la resolución de problemas.
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
POO
Definido por Grady Booch (1995)
Método de Implementación
Programas Organizados
Cooperativa de Objetos
Instancia de una clase
Jerarquía de clases
Relaciones de herencia
CaracterísticasObjetos, Clases,
Herencia, Mensajes y Polimorfismo
Objeto
Unidad de encapsulamiento
Datos y Funciones
Clase
Descripción de un Objeto
Similar a un Tipo de Dato
Tipo Abstracto de Dato
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
POOPOO
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
OBJETOOBJETO
Atributos Dato
Valor
Nombre
Método Acción
Cuerpo
Nombre
Mensaje Petición
Métodos-Objeto
Objeto-Objeto
Auto
Matrícula
Marca
Precio
Año_compra
Cal_prec_act
Emisor ReceptorMetodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
CLASECLASE
Cuenta CteCuenta
Servicio
Horas
Frecuencia
Descuento
S1010
8
2
20
Cuenta Ahorro
S2020
4
6
10
InstanciaClase
Declaración de una Clase
class nom_clase
{
//cuerpo de la clase
};
Definición de una Clase
tipo_retorno nom_clase :: nom_función(argumentos)
{
…
}
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivos
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
CLASECLASE
NIVELES DE ACCESONIVELES DE ACCESO
Miembro
Públicos
Protegidos
Privados
Accesible desde cualquier parte del programa
Accesible sólo por funciones miembros
Accesible por funciones miembros de la clase y de la clase derivada
class nom_clase
{
Private:
//Miembros privados Public: //Miembros públicos
Protected:
//Miembros protegidos };
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
Para acceder a un método de una clase :
nom_clase obj1;obj1.nombreMetodo(arg1,arg2,…, argN);
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivos
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
REUTILIZACIÓN DE CLASESREUTILIZACIÓN DE CLASES
Ventajas - Ahorro de tiempo
- Facilidad para intercambiar software
Tipos
Clase Compilada anteriormente
Código Fuente de una Clase
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
JERARQUÍA DE CLASESJERARQUÍA DE CLASES
- Expresa relación entre Clases y organización de Objetos
- Permite una ordenación de las abstracciones
Estructura de Clase Jerarquía “es un”
Generalización/Especialización
Estructura de Objetos Jerarquía “parte de”
Agregación
Persona
Empleado
Vendedor
Estudiante
es un
es un
es un
Auto
Motor
Parte_de
Transmisión
Parte_de
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
HERENCIAHERENCIA
- Propiedad que permite a los objetos ser construidos a partir de otros objetos
Tipos
Herencia Simple Herencia Múltiple
Artículo
Video
Radio
Audio
CD
BA
C
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
HERENCIAHERENCIA
Sintaxis de la Herencia Simple
class nom_clase_base { … };
class nom_clase_derivada: public | private | protected nom_clas_base
{
...
};
Sintaxis de la Herencia Múltiple
class A { … };
class C: public | private | protected A, public | private | protected B
{
…
};
class B { … };
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
HERENCIAHERENCIA
Tipo de Acceso a la clase base
DERIVACIÓN
ACCESO A LA CLASE BASE
Public Private Protected
Pública Public No accesible Protected
Privada Private No accesible Private
Protegida Protected No accesible Protected
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
POLIMORFISMOPOLIMORFISMO
Polimorfismo
Objetos responden diferente a un mismo mensaje
Crear una jerarquía de claseFunciones miembros virtuales en clase base
Clase derivada implementa funciones virtuales
permite
se debedeclarar
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
POLIMORFISMOPOLIMORFISMO
class figura
{ …
public:
virtual void Area ( );
…
};
class triangulo : public figura
{ …
public:
void Area ( );
…
};
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
SOBRECARGA DE OPERADORESSOBRECARGA DE OPERADORES
class complejo
{ …
public:
…
complejo operator ++( );
…
};
- No se pueden inventar nuevos operadores
- La sobrecarga de operadores funciona sólo cuando se aplica a objetos
- No se puede cambiar un operador unitario por uno binario y viceversa
- Empleo de la palabra reservada operator
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Excepciones Unarios: ++, -- Binarios: /, %, (), [], new, delete, +=, -=, *=, =, ... Unarios o Binarios: +, -, *, &
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
SOBRECARGA DE FUNCIONESSOBRECARGA DE FUNCIONES
class triangulo
{
private:
float area;
int lado;
public:
float leer( ){ .. return area;}
int leer( ){ .. return lado;}
…
};
Hacer uso de un mismo nombre para varias funciones que ejecutan tareas similares.
Para ello las funciones deben:
- Diferir al menos en el tipo o número de parámetros que acepta
Excepciones
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
FUNCIONES ESPECIALESFUNCIONES ESPECIALES
class nom_clase
{
public:
nom_clase( ) {…}
…
};
Dan sentido a la herencia entre clases y permiten la manipulación e inicialización del objeto
Excepciones
ConstructorConstructor
Por Defecto
class nom_clase
{
public:
nom_clase(argumentos ) {…}
…
};
Alternativo
DestructorDestructor
class nom_clase
{
public:
~nom_clase( ) {…}
…
};
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
FUNCIONES ESPECIALESFUNCIONES ESPECIALES
Excepciones
Funciones en Línea (inline)Funciones en Línea (inline)
class nom_clase
{
public:
inline tipo_retorno nom_func(argumentos ); {…}
…
};Funciones AmigasFunciones Amigas
class nom_clase_base
{
friend tipo_retorno nom_func(argumentos) ;
…
};
class nom_clase_derivada: public nom_clas_base
{
friend tipo_retorno nom_func(argumentos) ;
…
};
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
FUNCIONES ESPECIALESFUNCIONES ESPECIALES
Excepciones
Funciones VirtualesFunciones Virtuales
class nom_clase_base
{
public:
virtual tipo_retorno nom_fun_virtual(argumentos) ;
…
};
class nom_clase_derivada: public nom_clas_base
{ public:
tipo_retorno nom_fun_virtual(argumentos) ;
…
};
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
EXCEPCIONESEXCEPCIONES
Excepciones
Excepciones
Anomalías durante la ejecución
Fuentes de error
Resultado fuera de rango
División entre cero
Se detecta una excepción
Se lanza o levanta (thow)
Se captura excepción
Manejadores
catch
try
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
EXCEPCIONESEXCEPCIONES
Excepciones
…try {
float f, g;cout << “Introduzca lados del triangulo
rectangulo: ”;cin >> f >> g;cout << “Hipotenusa: ” << hipo(f, g) <<
endl: } catch(char *msg){
cerr << msg << endl;return 1;
} return 0;}float hipo(float a, float b) thow (char *){ if (a == 0 || b == 0) throw “Los valores ser distinto de cero”; if (a < 0 || b < 0) throw “Los valores deben ser positivos”; return sqrt (a * a + b * b);…
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
METODOLOGÍA DE MODELADO Y DESARROLLO DE METODOLOGÍA DE MODELADO Y DESARROLLO DE SOFTWARE OOSOFTWARE OO
Excepciones
UML
Notación estándar para modelado
No es propietaria
Desarrollo de software
Partes fundamentalesVistas
Diagramas
Elementos del modelo
Mecanismos generales
vistas
Aspectos del sistema
Diagramas
Descripción de una vista
Elementos del Modelo
Conceptos OO
Mecanismos generales
Información sobre elementos
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
METODOLOGÍA DE MODELADO Y DESARROLLO DE METODOLOGÍA DE MODELADO Y DESARROLLO DE SOFTWARE OOSOFTWARE OO
Excepciones
+ Indica atributos públicos# Indica atributos protegidos
- Indica atributos privados
Dependencia Generalización Asociación
UMLUML
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
METODOLOGÍA DE MODELADO Y DESARROLLO DE METODOLOGÍA DE MODELADO Y DESARROLLO DE SOFTWARE OOSOFTWARE OO
Excepciones
FASES DEL FASES DEL DESARROLLO DESARROLLO
DE UN SISTEMADE UN SISTEMA
Pruebas
Análisis de Requerimientos
Análisis
Diseño
Programación
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
EJEMPLOEJEMPLO
Excepciones
#include <iostream.h>class binario {
int x;public:
binario () { x = 0; }binario (int a) { x = a; }binario operator + (binario &);void visualizar(){ cout << x << endl; }
};binario binario::operator + (binario &a) {
binario aux;aux.x = x + a.x;return aux;
}void main() {
binario p(4), s(2), t;t = p + s;t.visualizar();
}
Sobrecarga de Operadores y Funciones
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
Excepciones
EJEMPLOEJEMPLO
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
//Definición de la clase CEmpleado
class CEmpleado{protected: char ape[20]; double sueldo;public: CEmpleado() { strcpy(ape, ""); sueldo=0; } CEmpleado(char ap[20], double s) { strcpy(ape, ap); sueldo=s; } char* ObtenerApellido(); double ObtenerSueldo();};
Herencia
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
Excepciones
EJEMPLOEJEMPLO
//funciones miembros de CEmpleado
char* CEmpleado::ObtenerApellido (){ return ape;}double CEmpleado::ObtenerSueldo (){ return sueldo;}
//Definición de la clase CGerente heredada de CEmpleado
class CGerente:public CEmpleado{ char dpto[20]; char secretaria[20];public: CGerente(char n[20], double s, char d[20], char sec[20]) { strcpy(ape, n); sueldo=s; strcpy(dpto,d); strcpy(secretaria, sec); } char* ObtenerSecretaria(); char* ObtenerDpto();};
Conceptos Básicos de la POO
Reutilización y Jerarquía de Clase
Herencia
Polimorfismo
Sobrecarga de Operadores y Funciones
Funciones Especiales
Metodología de Modelado y desarrollo de Software Orientado a Objeto
Objetivo
Introducción
PROGRAMACIÓN ORIENTADA A OBJETOS
Excepciones
EJEMPLOEJEMPLO
//Funciones miembros de CGerente
char* CGerente::ObtenerSecretaria(){ return secretaria;}
char* CGerente::ObtenerDpto (){ return dpto;}
//función principalvoid main(void){ CGerente g("Perez", 2500.60, "Sistemas", "Juana"); cout << g.ObtenerApellido()<<endl; cout << g.ObtenerSueldo()<<endl; cout << g.ObtenerDpto()<<endl; cout << g.ObtenerSecretaria()<<endl; system("pause");}