0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.

Slides:



Advertisements
Presentaciones similares
Arquitectura CLARO-TECNOTREE
Advertisements

Defina una clase TempMinEstacion que encapsule la representación de las temperaturas mínimas registradas en una estación meteorológica en un período y.
Tipos de Datos Abstractos Vector de Racionales
TDA Matriz Racionales Implementar un TDA MatrizRac que brinde operaciones para calcular el producto de un escalar por una matriz, la suma de dos matrices,
El proceso de desarrollo de software
El Proceso de desarrollo de software
El proceso de desarrollo de software
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
El proceso de desarrollo de software
Fundamentos de Ingeniería de Software
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Programación Orientada a Objetos Encapsulamiento.
Aplicación del paradigma orientado a objetos
PROGRAMACION ORIENTADA
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño.
Genericidad Una clase genérica encapsula una estructura y brinda un conjunto de servicios cuya implementación no depende del tipo de las componentes.
Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
Lic. Rosemary Torrico Bascopé
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Programación Orientada a Aspectos (POA)
Fundamentos de Programación
Introducción a la POO • ¿Qué es la programación orientada a objets (POO)? – Un “paradigma” de programación – Una forma de pensar acerca de los problemas.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Clases.
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Estructuras.
Introducción a la Programación Orientada a Objetos VRacional Racional [] arreglo > VRacional (max : entero) > establecerElem (pos : entero, elem : Racional)
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tabla.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Colección.
PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD
Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Clases.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Polimorfismo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
Introducción a la Programación Orientada a Objetos Sonia Rueda
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
FUNDAMENTOS DE PROGRAMACION
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
Acceso a Datos Erick López Ovando Licenciado en Informática.
DISEÑO DE COMPONENTES Y DESARROLLO BASADO EN COMPONENTES
Programación Orientada a Objetos: CLASES Y OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Prof. Manuel B. Sánchez. Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno.
Diferencia entre implementar en RPA e IPOO - Diseño En.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Asociación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Dependencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2015 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Transcripción de la presentación:

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad Dr. Luciano H. Tamargo Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 2015

PROGRAMACIÓN ORIENTADA A OBJETOS La programación orientada a objetos es un paradigma de programación. Un paradigma de programación brinda un principio y una metodología que guían todo el proceso de desarrollo de software. La POO tiene como principales objetivos favorecer la confiabilidad, reusabilidad y extensibilidad del software. Introducción a la Programación Orientada a Objetos IPOO

PROGRAMACIÓN ORIENTADA A OBJETOS Adoptar el enfoque propuesto por la programación orientada a objetos implica: –en la etapa de diseño reducir la complejidad en base a la descomposición del problema en piezas más simples, a partir de la identificación de objetos y su organización en una estructura de clases. –en la etapa de implementación utilizar un lenguaje que permita retener la estructura de clases identificada en la etapa de diseño y encapsular la representación interna de modo que sea inaccesible desde el exterior. Introducción a la Programación Orientada a Objetos IPOO

ENCAPSULAMIENTO El encapsulamiento permite usar una clase considerando qué funcionalidad brinda, sin tener en cuenta cómo la implementa. Cada clase es un módulo de código que puede ser diseñado, implementado y verificado con cierta independencia del resto de la aplicación. La verificación de un módulo permite decidir si brinda los servicios que corresponden a su comportamiento y cumple con sus responsabilidades. La verificación del sistema requiere verificar también la integración del conjunto de clases. Introducción a la Programación Orientada a Objetos IPOO

HERENCIA La herencia permite aumentar el nivel de abstracción mediante un proceso de clasificación en niveles. El proceso consiste en abstraer lo que es común y esencial en un conjunto de entidades, para formar un concepto general que comprenda a todas. Una clase derivada puede pensarse como una especialización de una clase más general. Alternativamente podemos pensar a una clase base como una generalización de sus clases derivadas. Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD La extensibilidad se refiere a reducir el impacto de los cambios. Las modificaciones con frecuencia pueden resolverse definiendo nuevas clases específicas, sin necesidad de cambiar las que ya han sido verificadas. La reusabilidad evita escribir el mismo código repetidamente. Las clases más generales brindan mayores oportunidades de reuso. Las clases más específicas suelen tener un comportamiento más ligado a la aplicación y son menos reusables. La genericidad favorece la reusabilidad y la extensibilidad. Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD Una clase genérica encapsula a una estructura cuyo comportamiento es independiente del tipo de las componentes. Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD 8 public boolean esCreciente (){ int i = 0; boolean es = true; while (i < f.cantElementos() - 1 && es){ es = f[i].lower(f[i+1]); i++; } return es; } Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD La clase Fila brinda un método esCreciente() que retorna verdadero sí y solo sí los elementos almacenados en una fila f están ordenados de forma creciente. Se asume que f tiene al menos dos elementos. El código del método esCreciente es independiente del tipo de las componentes de la fila f, en tanto esté definida la relación menor. Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD Introducción a la Programación Orientada a Objetos IPOO Fila f: arreglo de Elemento cant: entero > Fila(n: entero) > insertar(e: Elemento) > cantElementos(): entero esCreciente(): boolean contarElementos(e: Elemento): entero

GENERICIDAD class Fila{ private Elemento[] f; private int cantElementos; public Fila(int n){ f = new Elemento[n]; } public void insertar(Elemento e){ f[cantElementos++] = e; } public int cantElementos(){ return cantElementos; } Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD public int contarElementos(Elemento e){ int i = 0; int cont = 0; while (i < cantElementos()){ if (f[i].equals(e)) cont++; i++; } return cont; } Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD abstract class Elemento { abstract boolean equals(Elemento e); abstract boolean lower (Elemento e); } Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD class Robot extends Elemento{ … public boolean equals(Elemento e){ Robot r =(Robot) e; return nombre.equals(r.obtenerNombre()); } public boolean lower(Elemento e){ Robot r =(Robot) e; return energia < (r.obtenerEnergia()); } } Introducción a la Programación Orientada a Objetos IPOO ¿Por qué es necesario el casting?

GENERICIDAD En la aplicación se considera que: –Un robot es igual a otro si tiene el mismo nombre. El método equals compara los atributos nombre. –Un robot es menor que otro si tiene menos energía. El método lower compara los atributo energía. Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD class testFabrica { … Fila f = new Fila(100); Robot rob1 = new Robot(“Bob”); Robot rob2 = new Robot(“Tom”); f.insertar(rob1); f.insertar(rob2); … if (f.esCreciente()) Introducción a la Programación Orientada a Objetos IPOO Aunque una fila puede contener componentes de tipo Elemento, en una aplicación particular todas las componentes son del mismo tipo, en este ejemplo Robot.

GENERICIDAD class Racional extends Elemento{ //num y den no tienen factores primos public boolean equals (elemento e){ Racional r =(Racional) e; return r.num() == num && r.den() == den; } public boolean lower (elemento e){ Racional r =(Racional) e; return num/den < r.num()/r.den(); } Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD class testRacionales{ … Fila f = new Fila(100); Racional r1 = new Racional(1,2); Racional r2 = new Racional(1,3) ; f.insertar(r1); f.insertar(r2); … if (f.esCreciente()) Introducción a la Programación Orientada a Objetos IPOO En esta aplicación particular todas las componentes son del tipo Racional.

GENERICIDAD Introducción a la Programación Orientada a Objetos IPOO Matriz Elemento[][] m > Matriz ( fMax,cMax : entero) > establecerElem (f, c: entero, elem: Elemento) copy(m: Matriz) invertirFilas(f1, f2: entero) Asume que la posición es válida Asume que se verificó que f1 y f2 son válidas

GENERICIDAD Introducción a la Programación Orientada a Objetos IPOO Matriz Elemento[][] m > existePos(f, c: entero): boolean obtenerNFil(): entero obtenerNCol(): entero obtenerElem(f, c: entero): Elemento clone(): Matriz equals(m: Matriz): boolean todosNeutros(): boolean Retorna verdadero sí y solo sí cada elemento cumple la propiedad esNeutro

GENERICIDAD public void invertirFilas(int f1, int f2){ invertirElem(f1, f2, obtenerNCol()-1); } private void invertirElem(int f1,int f2,int c){ if (c >= 0){ invertirDos(f1, f2, c); invertirElem(f1, f2, c-1); } } private void invertirDos(int f1,int f2, int c){ Elemento e = m[f1, c]; m[f1, c] = m[f2, c]; m[f2, c] = e; } Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD public boolean todosNeutros(){ return todosNeu(obtenerNFil()-1); } private boolean todosNeu(int f){ boolean es = true; if (f >= 0) es = filaNeutros(f, obtenerNCol()-1) && todosNeu(f-1); return es; } private void filaNeutros(int f, int c){ boolean es = true; if (c >= 0) es = m[f,c].esNeutro()&&filaNeutros(f,c-1); return es; } Introducción a la Programación Orientada a Objetos IPOO

GENERICIDAD abstract class Elemento{ abstract public boolean esNeutro(); } class Pixel extends Elemento { private int r, b, g; … public boolean esNeutro(){ return r == b & b == g; } } class Racional extends Elemento{ private int num, den; … public boolean esNeutro(){ return num == 0; } } Introducción a la Programación Orientada a Objetos IPOO