poo

28
Lic. Yamila Bolívar, concurso 2

Upload: yamiruth

Post on 11-Jun-2015

15.599 views

Category:

Education


7 download

DESCRIPTION

Programación Orientada a Objetos

TRANSCRIPT

Page 1: POO

Lic. Yamila Bolívar, concurso 2007

Page 2: POO

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

Page 3: POO

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.

Page 4: POO

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

Page 5: POO

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

Page 6: POO

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

Page 7: POO

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);

Page 8: POO

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

Page 9: POO

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

Page 10: POO

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

Page 11: POO

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

Page 12: POO

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

Page 13: POO

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

Page 14: POO

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

Page 15: POO

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: +, -, *, &

Page 16: POO

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

Page 17: POO

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( ) {…}

};

Page 18: POO

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) ;

};

Page 19: POO

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) ;

};

Page 20: POO

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

Page 21: POO

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);…

Page 22: POO

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

Page 23: POO

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

Page 24: POO

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

Page 25: POO

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

Page 26: POO

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

Page 27: POO

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();};

Page 28: POO

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");}