Vous êtes sur la page 1sur 21

UNIVERSIDAD PERUANA UNION

FACULTAD DE INGENIERIA Y ARQUITECTURA


E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

PROGRAMA
CION 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
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

Bicicleta

Marca:Cadena
Color:Enum(R,V,Am,Az,….)
Peso:Real
Precio:Real
Cambio_Actual:Entero
Cantidad_Cambios:Entero
Tipo_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.
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

3. Conceptos definidos por las personas.


4. Objetos físicos a los cuales se les puede dar una definición como
clase.
I. Seres Vivos:

Docente Alumno
Nombres:cadena
Apellidos:cadena
Edad:Entero
Dirección:cadena
Sexo:Enum(M,F)
Fecha_Nac:Fecha
Fecha_Inic_Contr:Fecha
Fecha_Fin_Contr:Fecha
Fecha_Titulo:Fecha
Nro_Horas:Entero
Firmar_Contrato(Fecha_Inic_
Contr, Fecha_Fin_Contr)
Mostrar_Sexo()
Calcular_Sueldo(Nro_Horas)
Calcular_Años_Exp(Fecha_
Título)

Pez Eucalipto
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

II. Documentos.

Factura FUT
Nro_Factura:Entero
Fecha_Factura:Fecha
Sub_Total:Real
Igv: Real
Nombre_Cliente:Cadena
Ruc_Cliente:Cadena
Imprimir(Nro_Factura)
Mostrar(Nro_Factura)
Calcular_Igv(Sub_Total):Real
Calcular_Monto_Final(Sub_Tota,
Calcular_Igv(Sub_Total)):Real
Anular (Nro_Factura)

Voucher Acta
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

III. Conceptos definidos por las personas.

Pago Plato
Fecha_Programada:Fecha
Fecha_Pago:Fecha:
Concepto_Pago:Cadena
Monto_Pago:Decimal

Registrar_Pago(Fecha_
Pago, Concepto_Pago,
Monto_Pago)

Calcular_Pago(Monto_
Pago)

Calcular_Mora(Fecha_
Programada, Fecha_
Pago)

Impuesto Consulta_Médica
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

Punto
CoordenadaX
CoordenadaY
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

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

Laboratorio Radio
Piso:
Capacidad:
Tamaño:

CD
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

• PROGRAMACION ORIENTADA A OBJETOS:


UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

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.

ABSTRAC
CION

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.

ABSTRAC
CION COMPORTAMIENTO
(operaciones o métodos)
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

¿Qué hace
la clase?

IMPLEMENTACION
¿Cómo lo hace
(código de los métodos) la 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.

Bicicleta

private:Marca:Cadena
private:Color:Enum(R,V,Am,Az,….)
private:Peso:Real
Parte privada.
private:Precio:Real Llamada Campos.
private:Cambio_Actual:Entero
private:Cantidad_Cambios:Entero
private:Tipo_aros:Enum(14,16,18)
….

Las propiedades
public:Marca encapsulan los
public:Color, atributos.
Parte pública …
de la
Clase Constructor()
Montar() Cada método es una
Frenar(Peso,Cambio_Actual, interface que
Cantidad_Cambios) comunica
(encapsulando) el
Cambiar(Cambio_Actual, exterior de la clase
Nuevo_Cambio) con ella.
Destructor() …
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

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.

D. POLIMORFISMO:

Cpersona

Nombres:string
Direccion:string
Edad:int
Sueldo:double

Pagar_Impuesto()

CTrabajador CAutoridad
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

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
{
//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()
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

{
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()
{
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()
{
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

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();
//Esta línea manadrà un error porque Sueldo no es
//parte de CAutoridad.
Console.WriteLine(Ca.Sueldo);
Console.ReadLine();
}
}
}

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.

A los otros 4 elementos mencionados, Luis Joyanes Aguilar en otra obra


(Microsoft C++:1994 - Manaual de Bolsillo) agrega un elemento más:
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

Implemente otro ejemplo en código C#:


UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)
UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)
ARREGLOS
ARCHIVOS
GRAFICOS
ARBOLES
ESTRUC
COLASS
ENUME
LISTAS
PILASS
DINAMICOS
ESTRATICO
TIPOS
RADOS
TURAS
ABSTRACT
S
OS DE
DATOS UNIVERSIDAD PERUANA UNION
FACULTAD DE INGENIERIA Y ARQUITECTURA
E.A..P. INGENIERIA DE SISTEMAS
Ing.Omar L. Loaiza Jara (2011-II)

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.

Vous aimerez peut-être aussi