POO

17,186 views

Published on

Programación Orientada a Objetos

Published in: Education
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
17,186
On SlideShare
0
From Embeds
0
Number of Embeds
753
Actions
Shares
0
Downloads
713
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

POO

  1. 1. PROGRAMACIÓN ORIENTADA A OBJETOS (POO)
  2. 2. 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ÓN <ul><li>La POO </li></ul><ul><li>Representa un enfoque nuevo </li></ul><ul><li>Descripción de los objetos que se manipularán </li></ul><ul><li>Se deben identificar las clases y el enfoque en que estas interactuarán </li></ul>
  3. 3. 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 OBJETIVO 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.
  4. 4. 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ísticas Objetos, 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 POO
  5. 5. 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 OBJETO Dato Valor Nombre Acción Cuerpo Nombre Petición Métodos-Objeto Objeto-Objeto Auto Matrícula Marca Precio Año_compra Cal_prec_act Emisor Receptor Metodología de Modelado y desarrollo de Software Orientado a Objeto Excepciones Atributos Método Mensaje
  6. 6. 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 CLASE Cuenta Cte Cuenta Servicio Horas Frecuencia Descuento S1010 8 2 20 Cuenta Ahorro S2020 4 6 10 Instancia Clase 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
  7. 7. 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 CLASE NIVELES DE ACCESO 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); Miembro
  8. 8. 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 CLASES Ventajas - Ahorro de tiempo - Facilidad para intercambiar software Clase Compilada anteriormente Código Fuente de una Clase Metodología de Modelado y desarrollo de Software Orientado a Objeto Excepciones Tipos
  9. 9. 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 CLASES <ul><li>Expresa relación entre Clases y organización de Objetos </li></ul><ul><li>Permite una ordenación de las abstracciones </li></ul>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
  10. 10. 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 HERENCIA <ul><li>Propiedad que permite a los objetos ser construidos a partir de otros objetos </li></ul>Herencia Simple Herencia Múltiple Artículo Video Radio Audio CD B A C Metodología de Modelado y desarrollo de Software Orientado a Objeto Excepciones Tipos
  11. 11. 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 HERENCIA 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
  12. 12. 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 HERENCIA Tipo de Acceso a la clase base Metodología de Modelado y desarrollo de Software Orientado a Objeto Excepciones Protected No accesible Protected Protegida Private No accesible Private Privada Protected No accesible Public Pública Protected Private Public ACCESO A LA CLASE BASE DERIVACIÓN
  13. 13. 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 POLIMORFISMO Polimorfismo Objetos responden diferente a un mismo mensaje Crear una jerarquía de clase Funciones miembros virtuales en clase base Clase derivada implementa funciones virtuales permite se debe declarar Metodología de Modelado y desarrollo de Software Orientado a Objeto Excepciones
  14. 14. 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 POLIMORFISMO 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
  15. 15. 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 OPERADORES class complejo { … public: … complejo operator ++( ); … }; <ul><li>No se pueden inventar nuevos operadores </li></ul><ul><li>La sobrecarga de operadores funciona sólo cuando se aplica a objetos </li></ul><ul><li>No se puede cambiar un operador unitario por uno binario y viceversa </li></ul><ul><li>Empleo de la palabra reservada operator </li></ul>Metodología de Modelado y desarrollo de Software Orientado a Objeto Excepciones Unarios: ++, -- Binarios: /, %, (), [], new, delete, +=, -=, *=, =, ... Unarios o Binarios: +, -, *, &
  16. 16. 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 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: <ul><li>Diferir al menos en el tipo o número de parámetros que acepta </li></ul>Excepciones
  17. 17. 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 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 Constructor Por Defecto class nom_clase { public: nom_clase(argumentos ) {…} … }; Alternativo Destructor class nom_clase { public: ~ nom_clase( ) {…} … };
  18. 18. 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 ESPECIALES Excepciones Funciones en Línea (inline) class nom_clase { public: inline tipo_retorno nom_func(argumentos ); {…} … }; Funciones 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) ; … };
  19. 19. 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 ESPECIALES Excepciones Funciones 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) ; … };
  20. 20. 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 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 Excepciones
  21. 21. 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 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); …
  22. 22. 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 SOFTWARE OO Excepciones Notación estándar para modelado No es propietaria Desarrollo de software Partes fundamentales Vistas 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 UML
  23. 23. 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 SOFTWARE OO Excepciones + Indica atributos públicos # Indica atributos protegidos - Indica atributos privados Dependencia Generalización Asociación UML
  24. 24. 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 SOFTWARE OO Excepciones FASES DEL DESARROLLO DE UN SISTEMA Pruebas Análisis de Requerimientos Análisis Diseño Programación
  25. 25. 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 EJEMPLO 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
  26. 26. 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 EJEMPLO #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, &quot;&quot;); sueldo=0; } CEmpleado(char ap[20], double s) { strcpy(ape, ap); sueldo=s; } char* ObtenerApellido(); double ObtenerSueldo(); }; Herencia
  27. 27. 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 EJEMPLO //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(); };
  28. 28. 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 EJEMPLO //Funciones miembros de CGerente char* CGerente::ObtenerSecretaria() { return secretaria; } char* CGerente::ObtenerDpto () { return dpto; } //función principal void main(void) { CGerente g(&quot;Perez&quot;, 2500.60, &quot;Sistemas&quot;, &quot;Juana&quot;); cout << g.ObtenerApellido()<<endl; cout << g.ObtenerSueldo()<<endl; cout << g.ObtenerDpto()<<endl; cout << g.ObtenerSecretaria()<<endl; system(&quot;pause&quot;); }

×