Professional Documents
Culture Documents
Introduccin Objetivo
INTRODUCCIN
La POO
Conceptos Bsicos de la POO Reutilizacin y Jerarqua de Clase Herencia Polimorfismo Sobrecarga de Operadores y Funciones Funciones Especiales Excepciones Metodologa de Modelado y desarrollo de Software Orientado a Objeto
-Representa un enfoque nuevo - Descripcin de los objetos que se manipularn - Se deben identificar las clases y el enfoque en que estas interactuarn
OBJETIVO
Aplicar conceptos y funciones de la Programacin Orientada a Objetos (POO), apreciando su efectividad en el mantenimiento y reutilizacin de componentes (objetos, mensajes, mtodos y clases) y, en la resolucin de problemas.
POO
Definido por Grady Booch (1995) Mtodo de Implementacin Clase Tipo Abstracto de Dato Descripcin de un Objeto Similar a un Tipo de Dato Programas Organizados Cooperativa de Objetos Instancia de una clase Jerarqua de clases
POO
Objeto
Unidad de encapsulamiento
Datos y Funciones
OBJETO
Nombre
Atributos
Dato
Ao_compra
Cal_prec_act
Mtodo
Accin Cuerpo
Objeto-Objeto
Mensaje Funciones Especiales Excepciones Metodologa de Modelado y desarrollo de Software Orientado a Objeto
Emisor
Peticin Mtodos-Objeto
Receptor
CLASE
Cuenta Cuenta Cte Cuenta Ahorro
Servicio
Horas Frecuencia Descuento
S1010
8 2 20
S2020
4 6 10
Clase
Instancia
{
}
Pblicos
Sobrecarga de Operadores y Funciones Funciones Especiales Excepciones Metodologa de Modelado y desarrollo de Software Orientado a Objeto
class nom_clase { Private: //Miembros privados Public: //Miembros pblicos Protected: //Miembros protegidos }; Para acceder a un mtodo de una clase :
REUTILIZACIN DE CLASES
JERARQUA DE CLASES
Estructura de Objetos Jerarqua parte de Agregacin Auto Parte_de Motor Parte_de Transmisin
Sobrecarga de Operadores y Funciones Funciones Especiales Excepciones Metodologa de Modelado y desarrollo de Software Orientado a Objeto
Empleado
HERENCIA
- Propiedad que permite a los objetos ser construidos a partir de otros objetos
Tipos
Audio
Radio
CD
HERENCIA
Sintaxis de la Herencia Simple
class nom_clase_base { }; class nom_clase_derivada: public | private | protected nom_clas_base
{
... };
HERENCIA
POLIMORFISMO
permite
Polimorfismo
declarar se debe
POLIMORFISMO
Herencia
class triangulo : public figura
SOBRECARGA DE OPERADORES
Conceptos Bsicos de la POO Reutilizacin y Jerarqua de Clase Herencia Polimorfismo Sobrecarga de Operadores y Funciones Funciones Especiales Excepciones Metodologa de Modelado y desarrollo de Software Orientado a Objeto
- La sobrecarga de operadores funciona slo cuando se aplica a objetos - No se puede cambiar un operador unitario por uno binario y viceversa - Empleo de la palabra reservada operator class complejo { public: complejo operator ++( ); };
Unarios: ++, -Binarios: /, %, (), [], new, delete, +=, -=, *=, =, ... Unarios o Binarios: +, -, *, &
SOBRECARGA DE FUNCIONES
Conceptos Bsicos de la POO Reutilizacin y Jerarqua de Clase Herencia Polimorfismo Sobrecarga de Operadores y Funciones Funciones Especiales Excepciones
Para ello las funciones deben: - Diferir al menos en el tipo o nmero de parmetros que acepta
class triangulo { private: float area; int lado; public: float leer( ){ .. return area;} int leer( ){ .. return lado;}
};
FUNCIONES ESPECIALES
Dan sentido a la herencia entre clases y permiten la manipulacin e inicializacin del objeto
Constructor
Por Defecto class nom_clase { public: nom_clase( ) {} Alternativo class nom_clase { public: nom_clase(argumentos ) {}
};
Destructor
class nom_clase { public: ~nom_clase( ) {}
Funciones Amigas
class nom_clase_base { friend tipo_retorno nom_func(argumentos) ;
EXCEPCIONES
Conceptos Bsicos de la POO Reutilizacin y Jerarqua de Clase Herencia Polimorfismo Sobrecarga de Operadores y Funciones Funciones Especiales Excepciones Metodologa de Modelado y desarrollo de Software Orientado a Objeto
Se captura excepcin
Manejadores catch try Fuentes de error Resultado fuera de rango Divisin entre cero
Excepciones
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);
Mecanismos generales
Informacin sobre elementos
UML
Conceptos Bsicos de la POO Reutilizacin y Jerarqua de Clase Herencia Polimorfismo Sobrecarga de Operadores y Funciones Funciones Especiales Excepciones Metodologa de Modelado y desarrollo de Software Orientado a Objeto Dependencia Generalizacin Asociacin + Indica atributos pblicos # Indica atributos protegidos - Indica atributos privados
Diseo
Programacin
Pruebas
EJEMPLO
Sobrecarga de Operadores y Funciones
#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(); }
EJEMPLO
Herencia
#include <iostream.h> #include <string.h>
#include <stdlib.h>
//Definicin 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(); };
EJEMPLO
//funciones miembros de CEmpleado char* CEmpleado::ObtenerApellido () { return ape; } double CEmpleado::ObtenerSueldo () { return sueldo; }
Polimorfismo Sobrecarga de Operadores y Funciones Funciones Especiales Excepciones Metodologa de Modelado y desarrollo de Software Orientado a Objeto
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(); };
EJEMPLO
Conceptos Bsicos de la POO Reutilizacin y Jerarqua de Clase Herencia Polimorfismo Sobrecarga de Operadores y Funciones Funciones Especiales Excepciones Metodologa de Modelado y desarrollo de Software Orientado a Objeto
char* CGerente::ObtenerSecretaria() { return secretaria; } char* CGerente::ObtenerDpto () { return dpto; } //funcin principal void 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"); }