Download Slide 1 - POOITN

Document related concepts

Polimorfismo (informática) wikipedia , lookup

Scala (lenguaje de programación) wikipedia , lookup

Visitor (patrón de diseño) wikipedia , lookup

Objeto inmutable wikipedia , lookup

Rust (lenguaje de programación) wikipedia , lookup

Transcript
HISTORIA
La POO se originó con Simula 67, un lenguaje diseñado para
hacer simulaciones, en el Centro de Cómputo Noruego en Oslo
quienes trabajaban en simulaciones de naves. La idea surgió al
agrupar los diversos tipos de naves en diversas clases de objetos,
siendo responsable cada clase de objetos de definir sus propios
datos y comportamientos.
Fueron refinados más tarde en Smalltalk, desarrollado en Simula
(versión escrita sobre Basic) ,diseñado para ser un sistema
completamente dinámico, en el cual los objetos se podrían crear y
modificar en tiempo de ejecución, en lugar de tener un sistema
basado en programas estáticos.
Profesor: Fca. Irene Saiz Alfaro
Correo: [email protected]
HISTORIA
La POO se fue convirtiendo en el estilo de programación
dominante a mediados de los años ochenta, en gran parte debido
a la influencia de C++(extensión del C). Su dominación fue
consolidada gracias al auge de las Interfaces Graficas del Usuario,
para las cuales la programación orientada a objetos está
particularmente bien adaptada.
A lenguajes como Ada, BASIC, Lisp, y Pascal, se les agregaron
características de la orientación a objetos. Aunque tuvieron
algunos problemas de compatibilidad y en la capacidad de
mantenimiento del código.
Profesor: Fca. Irene Saiz Alfaro
Correo: [email protected]
HISTORIA
Se hicieron muchas tentativas para crear nuevos lenguajes
basados en métodos orientados a objetos. El Eiffel de Bertrand
Meyer fue un temprano y moderadamente acertado lenguaje con
esos objetivos, pero ahora ha sido esencialmente reemplazado
por Java, en gran parte debido a la aparición de Internet y a la
implementación de la máquina virtual de Java en la mayoría de
navegadores. PHP en su versión 5; soporta una orientación
completa a objetos.
Su uso se popularizó a principios de la década de los años 1990.
En la actualidad, existe una gran variedad de lenguajes de
programación que soportan la orientación a objetos.
Profesor: Fca. Irene Saiz Alfaro
Correo: [email protected]
Es un paradigma de programación que usa objetos y
sus interacciones, para diseñar aplicaciones.
Está basado en varias técnicas como:
 Abstracción.
 Encapsulamiento.
 Herencia.
 Polimorfismo.
Lenguajes que soportan POO: C++, Java, C#.
Profesor: Fca. Irene Saiz Alfaro
Correo: [email protected]
CLASE
• Las clases son estructuras o plantillas que sirven para definir un
objeto.
• Es una descripción general de un conjunto de objetos similares.
• Una clase contiene una colección de métodos y definiciones de
datos.
• Una clase es un tipo de datos al igual que cualquier otro tipo de
dato definido en un lenguaje de programación.
<Descriptor de acceso> class Nombre_de_la_clase
{
Variables,
instrucciones,
métodos, etc…
}
Ejemplo:
public class Empleado
{
string nombre;
int salario;
void Calcular_Salario()
{
……………
}
}
OBJETO
 Es la instancia de una clase. Tiene un estado (atributos),
comportamiento (métodos) e identidad:
 El estado conjunto de valores de todos los atributos en un
instante de tiempo determinado.
 El comportamiento conjunto de operaciones que se pueden
realizar con él.
 La identidad es una propiedad de un objeto que lo diferencia
del resto, es su identificador, cada objeto ocupa su propia
posición en la memoria.
Declaracion:
Nombre _de_la_Clase Nombre_del_objeto ;
Instanciar el objeto:
Nombre_del_objeto = new Nombre_de_la_Clase ( );
Nota: Cuando se instancia el objeto se reservan las localidades de memoria;
Nombre _de_la_clase Nombre_del_objeto = new Nombre_de_la_clase ( );
Empleado Objeto_Empleado = new Empleado ( );
ABSTRACCION
 Es la propiedad de los objeto que consiste en tener en cuenta
solo los aspectos mas importantes desde un punto de vista
determinado.
 Implica reducir los componentes fundamentales de
información de un fenómeno para conservar sus rasgos más
relevantes.
 Ejemplo: Mapa, Televisión, Persona, Carro, etc.
Nuestra herramienta mental más importante para competir
con la complejidad es la abstracción. Por tanto, un
problema no deberá considerarse inmediatamente en
términos de instrucciones de un lenguaje, sino de elementos
naturales del problema mismo, abstraídos de alguna
manera. [Niklaus Wirth, Creador del Lenguaje Pascal]
ENCAPSULAMIENTO
 Es el proceso de agrupar datos y operaciones relacionadas
bajo la misma unidad de programación. En el caso de los
objetos que poseen las mismas características y
comportamiento se agrupan en clases.
 La ocultación de los datos permite separar el aspecto de un
componente, definido por su interfaz con el exterior, de sus
detalles internos de implementación.
Herencia
 Es la propiedad que permite compartir información entre dos
entidades evitando la redundancia. La herencia permite definir
nuevas clases a partir de otras ya existentes, de modo que
presentan las mismas características y comportamientos de
estas, así como otras adicionales.
 La clase existente se llama clase base y la clase nueva es la
clase derivada. Esta última puede convertirse en clase base
para clases derivadas en un futuro.
 Clases diferentes se pueden conectar unas con otras de modo
jerárquico.
POLIMORFISMO
 Es la propiedad que permite a una operación tener el
mismo nombre en clases diferentes y que actúe de modo
diferente en cada una de ellas.
 El polimorfismo significa la capacidad de una operación
de ser interpretada solo por el propio objeto que lo
invoca, el polimorfismo se realiza en tiempo de ejecución
ya que durante la compilación no se conoce que tipo de
objeto.
MODULARIDAD
 Se denomina Modularidad a la propiedad que permite
subdividir una aplicación en partes más pequeñas
(llamadas módulos), cada una de las cuales debe ser tan
independiente como sea posible de la aplicación en sí y
de las restantes partes. Estos módulos se pueden
compilar por separado, pero tienen conexiones con otros
módulos. Al igual que la encapsulación, los lenguajes
soportan la Modularidad de diversas formas.
Para modelar una aplicación orientada a objetos los pasos
son:
 Identificación de los objetos del problema.
 Agrupamiento en clases de los objetos con
comportamiento y características comunes.
 Identificación de los datos y operaciones de cada una de
las clases.
 Identificación de las relaciones existentes entre las
diferentes clases del modelo.
 Los diagramas de clases son una potente herramienta de diseño ayudando
a los desarrolladores a planificar y establecer la arquitectura y estructura
del sistema y subsistema antes de escribir el ningún código esto permite
asegurar que el sistema este bien diseñado desde el principio. además
estos diagramas de clases son usadas prácticamente en la totalidad de
sistema en que se utilizan UML para su modelado.
 Los diagramas de clase también muestran los atributos y operaciones de
una clase y las restricciones a que se ven sujetos, según la forma en que se
conecten los objetos. En mi punto de vista los diagramas de clases
muestran o ayudan a implementar mejor las ideas en un programa, dirigido
por atributos y aspectos importantes en ello, el diagrama tiene que estar
perfectamente elaborado para evitar errores en la realización del
programa.