Poo teoria

26
UNIVERSIDAD PERUANA UNION FACULTAD DE INGENIERIA Y ARQUITECTURA EAP. INGENIERIA DE SISTEMAS Ing. Omar L. Loaiza Jara (2014-I) PROGRAMACION ORIENTADA A OBJETOS OBJETOS: Un objeto es la ocurrencia de algo que existe en el mundo real. Los objetos son instancias de la conceptualización de un modelo que alguien construyó como una definición. Ejemplo: Todos las bicicletas (cada una un objeto) se fabricaron en base a un modelo (diseño o concepto). La idea (concepto) ayudó a construir varias de sus instancias. Podríamos decir que la Clase es un molde del cual se fabrican las instancias, es decir todas las bicicletas que vemos. CLASES: Como se esgrimió en el punto anterior, todo lo que nos rodea está constituido de objetos. Una clase es la definición conceptual de uno o varios objetos similares. Así por ejemplo: Juan tiene una bicicleta, Pedro tiene otra y María lo propio. Aunque todos ellos tienen una bicicleta con prestaciones diferentes, el hecho es que para que cada uno de ellos posea una alguien tuvo que entender qué es , cómo es y cómo funciona una bicicleta, de tal modo que diremos que armó un modelo a través de un diseño de ingeniería. En cuestiones de software dicho modelo se plasmaría en un plano de ingeniería orientado al software como: Partes de una Clase: Nombre de la Clase Atributos o Campos de la Clase

Transcript of Poo teoria

Page 1: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

PROGRAMACION ORIENTADA A OBJETOS

OBJETOS:

Un objeto es la ocurrencia de algo que existe en el mundo real. Los objetos son instancias de la conceptualización de un modelo que alguien construyó como una definición. Ejemplo:

Todos las bicicletas (cada una un objeto) se fabricaron en base a un modelo (diseño o concepto). La idea (concepto) ayudó a construir varias de sus instancias.

Podríamos decir que la Clase es un molde del cual se fabrican las instancias, es decir todas las bicicletas que vemos.

CLASES: Como se esgrimió en el punto anterior, todo lo que nos rodea está constituido de objetos. Una clase es la definición conceptual de uno o varios objetos similares. Así por ejemplo: Juan tiene una bicicleta, Pedro tiene otra y María lo propio. Aunque todos ellos tienen una bicicleta con prestaciones diferentes, el hecho es que para que cada uno de ellos posea una alguien tuvo que entender qué es, cómo es y cómo funciona una bicicleta, de tal modo que diremos que armó un modelo a través de un diseño de ingeniería.

En cuestiones de software dicho modelo se plasmaría en un plano de ingeniería orientado al software como:

Partes de una Clase:

Nombre de la Clase

Atributos o Campos de la Clase

Operaciones de la Clase

Page 2: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

Bicicleta

Marca:CadenaColor:Enum(R,V,Am,Az,….)

Peso:RealPrecio:Real

Cambio_Actual:EnteroCantidad_Cambios:EnteroTipo_aros:Enum(14,16,18)

….

Montar()Frenar(Peso,Cambio_Actual,

Cantidad_Cambios)Cambiar(Cambio_Actual,

Nuevo_Cambio)…

Al plasmar el modelo de la figura anterior estamos indicando que atributos tendrán y que harán (operaciones) todas las bicicletas que se fabricarán a partir de ese diseño conceptual. Por supuesto todas tendrán las mismas características o atributos (marca, precio, color, cantidad de cambios, etc) y todas permitirán maniobrar, equilibrar, cambiar velocidad, frenar, etc.

Podríamos decir que la Clase es un molde del cual se fabrican las instancias, es decir todas las bicicletas que vemos. Es decir, las bicicletas de Pedro, Juan y María han salido del mismo concepto. Eso es una clase.

Hay clases que fácilmente pueden ser identificadas derivadas de objetos físicos y tangibles (Vehículo, Persona, Computadora, etc); sin embargo, habrán clases que no las podremos distinguir con facilidad, y con aquellas que responden a definiciones creadas por el ser humano, como por ejemplo: Venta, Pago, Descuento, Contrato, etc.

Como dijimos anteriormente las clases pueden abarcar de toda aquella instancia que viene del mundo real; sin embargo, en mi experiencia para una mayor comprensión y como ayuda auxiliar (no es la única y tampoco es obligatoria) distinguiremos las clases en los siguientes grupos:

1. Seres Vivos (personas, animales, plantas)2. Documentos.3. Conceptos definidos por las personas.4. Objetos físicos a los cuales se les puede dar una definición como

clase.

Page 3: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

I.Seres Vivos:

Docente AlumnoNombres:cadenaApellidos:cadenaEdad:EnteroDirección:cadenaSexo:Enum(M,F)Fecha_Nac:FechaFecha_Inic_Contr:FechaFecha_Fin_Contr:FechaFecha_Titulo:FechaNro_Horas:EnteroFirmar_Contrato(Fecha_Inic_Contr, Fecha_Fin_Contr)Mostrar_Sexo()Calcular_Sueldo(Nro_Horas)Calcular_Años_Exp(Fecha_Título)

Pez Eucalipto

Page 4: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

Page 5: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

II.Documentos.

Factura FUTNro_Factura:EnteroFecha_Factura:FechaSub_Total:RealIgv: RealNombre_Cliente:CadenaRuc_Cliente:CadenaImprimir(Nro_Factura)Mostrar(Nro_Factura)Calcular_Igv(Sub_Total):RealCalcular_Monto_Final(Sub_Tota,Calcular_Igv(Sub_Total)):RealAnular (Nro_Factura)

Voucher Acta

Page 6: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

Page 7: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

III.Conceptos definidos por las personas.

Pago PlatoFecha_Programada:FechaFecha_Pago:Fecha:Concepto_Pago:CadenaMonto_Pago:Decimal

Registrar_Pago(Fecha_Pago, Concepto_Pago,Monto_Pago)

Calcular_Pago(Monto_Pago)

Calcular_Mora(Fecha_Programada, Fecha_Pago)

Impuesto Consulta_Médica

Page 8: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

Punto

CoordenadaXCoordenadaY

Page 9: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

IV.Objetos físicos a los cuales se les puede dar una definición como clase.

Laboratorio RadioPiso:Capacidad:Tamaño:

CD

Page 10: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

PROGRAMACION ORIENTADA A OBJETOS:

Page 11: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

Luís Joyanes Aguilar nos dice lo siguiente: “La programación orientada a objetos permite una representación más directa del modelo del mundo real en código…” (Joyanes Aguilar: 1998. Pág. 105)

PILARES DE LA PROGRAMACION ORIENTADA A OBJETOS: Para Grady Booch (Análisis y Diseño Orientado a Objetos:1994), los cuatro elementos (propiedades) más importantes sin los cuales nuestros modelos no serían orientados a objetos son:

A. ABSTRACCIÒN: Al momento de definir una Clase dijimos que esta la conceptualización de instancias del mismo (Objetos) del mundo real. La pregunta es ¿y cómo se pasa del mundo real a un concepto?, es decir, de instancias concretas a un modelo conceptual, la respuesta es la Abstracción.

Objetos Clase

“La abstracción se centra en la vista externa del objeto, de modo que sirva para separar el comportamiento esencial de un objeto, de su implementación. Definir una abstracción (o hacer uso de ella para definir una clase) significa describir una entidad del mundo real (objeto), no importa lo compleja que pueda ser, y a continuación hacer su implementación en un programa (lenguaje de programación)”. Luís Joyanes Aguilar: 6ta. Edición-Pág. 107.

¿Qué hace

ABSTRACCION

ABSTRACCION

COMPORTAMIENTO(operaciones o métodos)

Page 12: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

la clase?

¿Cómo lo hacela clase?

B. ENCAPSULACIÒN: Una vez que se ha abstraído una clase, debe encapsularse (asegurar) que el contenido de la información de un objeto (instancia de la clase) esté protegida (private) y oculta al exterior. Se encapsula haciendo pública los atributos (también llamados campos)mediante el modificador “public”, y por otro lado se encapsula el modo (manera o contenido) como los métodos trabajan lo que en su definición dicen hacer, pero son ellos mismos los que comunican a la clase con e exterior.

Asimismo, debemos

Así por ejemplo en el caso de la bicicleta (ver figura) tenemos el método Montar. Al dueño de la bicicleta le interesa que la bicicleta le permita subirse al mismo, el còmo la bicicleta se las arregla para hacerlo posible queda oculto (caja negra) al usuario.

IMPLEMENTACION(código de los métodos)

Page 13: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

Entonces diremos que la abstracción de la que hablamos antes se refiere a entender el concepto de lo que se quiere modelar como clase y la implementación del mismo por medio de interfaces (parte pública – public – de atributos y métodos (o también llamadas operaciones o módulos) que la clase realiza.

C. MODULARIDAD: Una clase puede realizar o servir para múltiples efectos, pero todo no puede ser realizado en conjunto o hecho al mismo tiempo. Existirán ciertas operaciones que la clase realice en un determinado momento pero no lo hará todo en el mismo lapso de tiempo. Además rompería con el concepto de encapsulación y abstracción.

En el apartado anterior dijimos que la clase se comunica con el exterior a través de interfaces (especie de compuertas de comunicación de la clase), y que dichas interfaces son métodos; y son, precisamente esos métodos o módulos los que expresan el concepto de modularidad, que no es sino que cada método haga una parte de la funcionalidad total de la clase cuando llegue a ser un objeto

Cada módulo o método seguirá conservando el concepto de encapsulamiento.

Cabe decir que un mètodo puede usar a otro para llevar a cabo su funcionalidad.

Bicicleta

private:Marca:Cadenaprivate:Color:Enum(R,V,Am,Az,….)

private:Peso:Realprivate:Precio:Real

private:Cambio_Actual:Enteroprivate:Cantidad_Cambios:Enteroprivate:Tipo_aros:Enum(14,16,18)

….

public:Marcapublic:Color,

…Constructor()

Montar()Frenar(Peso,Cambio_Actual,

Cantidad_Cambios)Cambiar(Cambio_Actual,

Nuevo_Cambio)Destructor() …

Cada método es una interface que comunica (encapsulando) el exterior de la clase con ella.

Parte pública de la Clase

Las propiedades encapsulan los atributos.

Parte privada. Llamada Campos.

Page 14: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

D. POLIMORFISMO:

A CPersona la hemos definido como un concepto (clase) de persona a la cual llamaremos Clase Padre. CTrabajador y CAutoridad son dos conceptos de la realidad un trabajador cualesquiera y una autoridad cualesquiera también.

Tanto CTrabajador como CAutoridad son tipos del tipo base CPersona, por lo que heredan tanto los atributos como métodos del Padre (CPersona).

Ahora aquí el concepto de polimorfismo: Tanto CTrabajador como CAutoridad pagan impuestos, explicado por el concepto de herencia. Pero sucede que un trabajador paga impuestos en base a un porcentaje de su sueldo, 19%; y, una autoridad también paga impuestos, pero del 10%. Al pagar ambos sus impuestos de distinta manera y hacer uso de su definición (trabajador y autoridad) no dejan de ser personas. En otras palabras CPersona llama al mètodo Pagar_Impuestos() de la CTrabajador y lo usa como si fuera èl, de igual modo CPersona llama al mètodo Pagar_Impuestos() y lo usa por èl, y en ambos casos se comporta de diferente manera.

using System;using System.Collections.Generic;using System.Text;

namespace Archivos{

Cpersona

Nombres:stringDireccion:stringEdad:intSueldo:double

CTrabajador CAutoridad

Pagar_Impuesto()

Page 15: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

//DEFINICION DE LA CLASE PADRE DENOMINADA CPersona: public class CPersona { public string nombres; public string direccion; public int edad; public string Nombres { get { return this.nombres;} set { this.nombres = value; } } public string Direccion { get { return this.direccion; } set { this.direccion = value; } }

public int Edad { get { return this.edad; } set { this.edad = value; } }

public CPersona() { this.nombres=""; this.direccion=""; this.edad=0; } public CPersona(string Nombres, string Direccion, int Edad) { this.nombres = Nombres; this.direccion = Direccion; this.edad = Edad; }

//Tanto CAutoridad como CTrabajador tienen el Mètodo Pagar_Impusto()

public virtual void Pagar_Impuesto() { Console.WriteLine("Edad aumentada en 1 es: {0}",this.edad++); } }

//DEFINICION DE LA CTrabajador en la que se define la //“herencia” de la Clase CPersona:

public class CTrabajador : CPersona { public double sueldo; public double Sueldo { get { return this.sueldo; } set { this.sueldo = value; } } public CTrabajador(string Nombres, string Direccion, int Edad, double Sueldo):base()

Page 16: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

{ this.sueldo=Sueldo; } public override void Pagar_Impuesto() {

Console.WriteLine("El impuesto del Trabajador de S/. {0} es = {1}", this.Sueldo, this.Sueldo * 0.19); }

}

//DEFINICION DE LA CAutoridad en la que se define la //“herencia” de la Clase CPersona:

public class CAutoridad : CPersona { public double sueldo; public double Sueldo { get { return this.sueldo; } set { this.sueldo = value; } }

public CAutoridad(string Nombres, string Direccion, int Edad, double Sueldo): base() { this.sueldo = Sueldo; }

//Tanto CAutoridad como CTrabajador tienen el Mètodo Pagar_Impusto()

public override void Pagar_Impuesto() { this.Edad++; Console.WriteLine("El impuesto de la Autoridad de S/. {0} es = {1}", this.Sueldo,this.Sueldo*0.10); }

}

//AQUÍ VEREMOS EL USO DEL CONCEPTO DE POLIMORFISMO: public class Polimorfismo { static void Main() {

//Cp es una instancia directa del mismo tipo //CPersona.

CPersona Cp = new CPersona(); Cp.Pagar_Impuesto();

//Una instancia de la Clase CPersona (Cp) toma el //control de una instancia de la clase CTrabajador. CPersona Ct = new CTrabajador("Omar Loaiza Jara","Cusco",30,1000); //Una instancia de la Clase CPersona (Ca) toma el //control de una instancia de la clase CAutoridad. Cp.Pagar_Impuesto(); CPersona Ca = new CAutoridad("Juan Salas Carrión", "Arequipa", 45, 1500); Ca.Pagar_Impuesto();

Page 17: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

//Esta línea manadrà un error porque Sueldo no es //parte de CAutoridad. Console.WriteLine(Ca.Sueldo); Console.ReadLine(); } }}

A los otros 4 elementos mencionados, Luis Joyanes Aguilar en otra obra (Microsoft C++:1994 - Manaual de Bolsillo) agrega un elemento más:

CPersona asume el rol de CTrabajador para Pagar_;puesto().CPersona asume el rol de CTAutoridad para Pagar_;puesto().Esto se explica porque la Clase Padre puede asumir el rol de cualquiera de sus hijos, pero no llega a ser al fin y al cabo ninguno de los dos. Es por ello que Ca.Sueldo mandará error.

Otro ejemplo simple de polimorfismo puede darse en una oficina cuando un Gerente (padre) a otros Gerentes de menor rango a su cargo. Si uno de ellos no asiste a laborar, el Gerente (padre) tiene que hacer las labores de ese Gerente (hijo), aunque nunca llegará ha ser en esencia al cual reemplaza.

Page 18: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

Implemente otro ejemplo en código C#:

Page 19: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

Page 20: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

Page 21: Poo   teoria

UNIVERSIDAD PERUANA UNIONFACULTAD DE INGENIERIA Y ARQUITECTURA

EAP. INGENIERIA DE SISTEMASIng. Omar L. Loaiza Jara (2014-I)

E. REUTILIZACIÓN:Una vez que una clase se ha abstraído y procedido a implementar en Lenguaje de Programación, ésta puede ser distribuida otros programadores para que los utilicen, o simplemente a través de su instanciación cuando se programa. El código es portable y se puede volver a usar.

TIPOS ABSTRACTOS DE DATOS NO FINITOS O DINÁMICOS EN MEMORIA:Hasta el momento se han visto Tipos Abstractos de Datos, los cuales pueden ser: Arreglos, Enumeraciones y Estructuras (Ver página No. 7). Pero también hemos visto que una vez declaradas y puesta en marcha en la memoria de la computadora ocupan un espacio limitado en la RAM, y cada vez que queramos usar otro TAD estático deberemos crear otro.

¿Cómo manejar dinámicamente los Tipos Abstractos de Datos, de tal modo que podamos usar las estructuras de datos que definamos sin límites (salvo la capacidad del computador) en la RAM?, la respuesta es a través de los Tipos Abstractos de Datos Dinámicos:

A. Listas.:B. Pilas.C. Colas.D. Árboles.E. Otros (Ver página No. 7)

Esto lo veremos en secciones posteriores.

TIPOS ABSTRACT

OS DE DATOS

ESTRATICOS

DINAMICOSARREGLOSESTRUCTURASENUME RADOSLISTASPILASSCOLASSARBOLESGRAFICOSARCHIVOS