Programación Orientada a Objetos I.

Slides:



Advertisements
Presentaciones similares
MODELOS ORIENTADOS A OBJETOS
Advertisements

Unidad 3 Lenguajes .Net y POO
Fundamentos de Diseño de Software INFT.1
PROGRAMACION ORIENTADA A OBJETOS
Arquitectura CLARO-TECNOTREE
Programación Orientada a Objetos
Introducción a la Orientación a Objetos
Programación Orientada a Objetos (P.O.O.)
La Programación Orientado a Objetos
Fundamentos de Ingeniería de Software
POO Santiago, Mayo 2004 TRABAJO DE INVESTIGACIÓN POO Programación Orientada a Objetos CENAFOM Carolina Bravo V. Jaime Jofré B.
Tipo de Dato Abstracto Tipos de datos:
CONCEPTOS Y PRINCIPIOS ORIENTADOS A OBJETOS
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
PROGRAMACION ORIENTADA
DIAGRAMA DE COMPONENTES INTEGRANTES Córdova Vásquez Giovanny Escobar Alvares Calixto Gomez Quinteros Adelaida Pinto Flores Yarmila.
UNIDAD I. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA.
U NIDAD III P ROGRAMACIÓN O RIENTADA A O BJETOS (POO) Facilitadora: Ing. Patricia Gómez.
METODOLOGIA DE LA PROGRAMACION
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
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,
Material Original de Microsoft para desarrolladores adaptado por Jorge Miguel PERALTA para clases de Informática Aplicada (Haga clic para adelantar/atrasar.
 El termino OO, significa que el software es organizado como una colección de objetos. Un objeto es un paquete de software que contiene datos y procedimientos.
Ingeniería de Software
TIPOS DE DATOS ABSTRACTOS
Fundamentos de Programación
DISEÑO DE SOFTWARE 1ª. Parte
Bases de Datos Orientadas a Objetos (BDOO)
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
5.3 APROXIMACIONES AL DISEÑO
Unidad VI Documentación
DEFINICIÓN  Es una forma de entender un problema identificando las entidades principales que se encuentran en el.  Es una forma de desarrollar un sistema.
Programación Orientada a Objetos I.
Sara Isabel Osorio Alacraz Ana Isabel Vallejo Grisales
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
APLICACIÓN DE NUEVAS TECNOLOGÍAS EN LA CONSERVACIÓN Y ANÁLISIS DEL PATRIMONIO CULTURAL Pensar Relacionalmente: Bases de Datos Relacionales (una visión.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Programación Orientada a Objetos (P.O.O.)
Facultad de Ingeniería
TEMA 9: DIAGRAMA DE CLASE EN UML
Programación Orientada a Objeto
PROGRAMACION ORIENTADA A OBJETOS
Introducción a la Programación Orientada a Objetos (POO)
Visual Basic FUNCIONES Y PROCEDIMIENTOS
III. DESARROLLO DE SISTEMAS.. Podemos definir el desarrollo de sistemas informáticos como el proceso mediante el cual el conocimiento humano y el uso.
POO U1: INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
Ing. Esp. Ricardo Cujar. Programación Orientada a Objetos  Modelo de desarrollo de software.  Modo de pensar del hombre y no de la máquina.  Abstracción.
Programación orientada a objetos
UNIVERSIDAD TECNICA DE BABAHOYO EXTENSION DE QUEVEDO  Espinales Lisseth G RUPO N º 2 Temas:  Herencia  Polimorfismo  Encapsulamiento  2 Ejemplos Estudiante.
Programación Orientada a Objetos. Es importante aclarar desde un principio la diferencia que existe entre programación orientada a objetos y un lenguaje.
Ing. Johanna Macias Algoritmo, Estructura y Programación III.
DISEÑO DE COMPONENTES Y DESARROLLO BASADO EN COMPONENTES
Proceso de desarrollo de Software
Programación orientada a objetos
ORIENTACIÓN A OBJETOS El paradigma.
Programación Orientada a Objetos: CLASES Y OBJETOS
La Programación Orientado a Objetos
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Paradigma Orientado a Objetos
Fundamentos de Programación Unidad I Conceptos Básicos.
Fundamentos de Ingeniería de Software
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.
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
2015-BM5A. Introducción Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos.
PARADIGMA viene del Griego Paradeima = Modelo. Un paradigma es el resultado de los usos, y costumbres, de creencias establecidas de verdades a medias,
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 3 – Diseño de Programas.
Introducción Todos los lenguajes de programación son distintos entre si. Sin embargo, pueden ser agrupados según la forma de pensar y estructurar los.
PROGRAMACION ORIENTADA A OBJETOS
Transcripción de la presentación:

Programación Orientada a Objetos I

Antes de intentar aprender algo ten presente… lo complejo, alguna vez… fue simple, entiende lo simple.

El problema está en la técnica, no en la herramienta

Si no eres nuevo en esto de programar, pero aún no entiendes la orientación a objetos… deshazte de vicios y empieza nuevamente!

Listo?

Que es la orientación a objetos?

La orientación a objetos es un paradigma de programación

Típico! Si bien esta definición es correcta, el problema está, en que tanto lo comprendemos…

una forma de ver las cosas, o bien … A título personal… La orientación a objetos es “simplemente” una forma de ver las cosas, o bien …

…es una forma de entender un problema identificando las entidades principales que se encuentran en el..

La programación orientada a objetos (POO) es por tanto una forma de desarrollar un sistema, pensando en las entidades principales del problema que dicho sistema pretende resolver…

PINCIPIOS EN QUE SE APOYA LA TECNOLOGÍA O.O. Objeto como instancia de una Clase Métodos Mensajes

Artefacto más importante en el AOO Explica los conceptos más significativos en un dominio del problema. Previo a esto es fundamental establecer y perfeccionar el glosario del dominio En un modelo conceptual se ofrece una representación de cosas del mundo real, no de componentes de software.

Un modelo conceptual muestra: • Los conceptos. • Las asociaciones entre conceptos. • Los atributos de los conceptos. Un concepto se considera a partir de su: Símbolo * Definición * Extensión. Una distinción fundamental entre el AOO y el AE es la división por conceptos y no por funciones

la herramienta El lenguaje de programación es para resolver el problema El propósito de la POO no tiene que ver con el lenguaje de programación

conceptos relevantes presentes en el problema El propósito de la programación orientada a objetos consiste en… proporcionar una solución informática identificando los conceptos relevantes presentes en el problema

Identificar los conceptos relevantes o las entidades involucradas en un problema significa… reconocer las características de estos y las acciones que realizan o bien que producen algún efecto sobre ellos

Con respecto a los lenguajes de programación podemos decir que… cada uno usa la herramienta en que más hábil se considere, el problema finalmente no cambia

una u otra herramienta de trabajo De acuerdo a la situación con una u otra herramienta se nos hace más o menos difícil … y de acuerdo al escenario se debe elegir una u otra herramienta de trabajo

Veamos algunos conceptos clave… Qué es un Objeto?

Un Objeto es… Cualquier Cosa

En serio! Cualquier Cosa

Cualquier Cosa …de la que puedas emitir un concepto…

Es decir… Cualquier Cosa, todo es un objeto

…el mundo está lleno de objetos reales, los cuales se pueden representar como tales en una solución computarizada.

Veamos… Este es un objeto …es un automóvil de plástico, rojo con 4 llantas y 2 puertas

emitimos un concepto preconcebido Si realizáramos el proceso mental lentamente, nos daríamos cuenta de que al ver el objeto emitimos un concepto preconcebido es decir automóvil

En la imagen cada uno de los elementos que vemos es considerado un objeto Sin embargo de todos ellos podemos emitir un concepto conocido y para ello usamos la palabra globo

agrupación de objetos A ese concepto conocido que representa una …lo llamamos Clase

Una clase es como un molde de galletas… … este determina la forma y características que la galleta (el objeto) va a tener, sin ser el objeto real

El molde (la clase) no determina por ejemplo, que sabor tiene cada una de las galletas… …tampoco por cuanta cantidad de ingredientes estará compuesta.

La clase es una… …los objetos son todos los que podamos crear mentalmente a partir de dicha clase o concepto

La clase … … Describe un conjunto de objetos del Contexto del Problema, que tienen las mismas características y el mismo comportamiento

Hagamos un ejercicio, el típico… …el concepto que elegiremos es la clase persona

Este grupo de personas tiene un conjunto de características y comportamientos en común Nombre Edad Color de Piel Profesión Estado Civil Comportamientos Hablar Caminar Mirar Nacer Morir

Un objeto de la clase persona sería Características Nombre: Sandra Edad: 22 Color de Piel: Morena Profesión: Deportista Estado Civil: Soltera Comportamientos Hablar Caminar Mirar Nacer Morir

Otro objeto de la clase persona sería Características Nombre: Carlos Edad: 28 Color de Piel: Blanco Profesión: Abogado Estado Civil: Casado Comportamientos Hablar Caminar Mirar Nacer Morir

características (atributos o propiedades) Ya vamos entendiendo… Una clase esta compuesta por características (atributos o propiedades) y por comportamientos (acciones o métodos)

Las características y comportamientos de una clase son determinadas por el contexto del problema o escenario Esto en programación quiere decir, que dentro de un sistema, solo implementamos los atributos y métodos relacionados con el ámbito del problema que estamos solucionando.

Veamos algunos conceptos adicionales… A los valores que tienen los atributos de un objeto se les conoce como el estado del objeto, y a los atributos y métodos que ofrece se les conoce como la interfaz al código usado para construir las clases se le conoce como la implementación de la clase. Interfaz 1. f. Inform. Conexión física y funcional entre dos aparatos o sistemas independientes.

Los objetos se comunican con otros a través de mensajes Un mensaje es una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó. Wikipedia

Agregación/Composición Los objetos tienen diferentes tipos de relaciones Asociación Agregación/Composición

Ahora veamos conceptos avanzados

… la modularidad y la reusabilidad Los principios que dirigen la orientación a objetos son… … la modularidad y la reusabilidad Qué son?

En términos simples la modularidad significa trabajar por partes…

Y la reusabilidad significa No se invente la rueda! Lo que ya esta hecho es para usarse y algunas de las cosas que no están hechas, deben construirse pensando en que alguien necesitará usarlo alguna vez

… que tan claros los tenemos?…. Con respecto a la comunicación tenemos más principios alta cohesión y el bajo acoplamiento … que tan claros los tenemos?….

… el criterio de relación debe ser de negocio o técnico y no subjetivo Cuando decimos que un componente tiene una alta cohesión hablamos de que todos los elementos dentro de el están estrechamente relacionados … el criterio de relación debe ser de negocio o técnico y no subjetivo

Cuando decimos que un componente tiene una bajo acoplamiento hablamos del nivel de independencia que tiene un componente con respecto a otros

Características de la Orientación a Objetos

Abstracción Quitar propiedades y acciones de un objeto para dejar solo las necesarias Proceso mental que tiene dos aspectos complementarios El aspecto de destacar los detalles relevantes del objeto de estudio El aspecto de ignorar los detalles irrelevantes del objeto.

Encapsulamiento no puede ser manipulado directamente desde el exterior y su representación concreta es invisible.

Poseer todas las características de la clase de la que proviene Herencia Poseer todas las características de la clase de la que proviene La herencia permite modelar relaciones del tipo ...es es un… y clasificaciones

Polimorfismo Es la posibilidad de definir de forma distinta un método, dependiendo del objeto cada clase sabe como realizar tal operación

Beneficios de la tecnología de objetos 1. Permite desarrollar software en mucho menos tiempo y con menos coste. 2. Se consigue aumentar la calidad de los sistemas. 3. El software orientado a objetos es más fácil de modificar y mantener. 4. La tecnología de objetos facilita la adaptación al entorno y el cambio. 5. Fomenta una metodología basada en componentes 6. Utiliza en el análisis y diseño

Resumen Todo es un objeto Los objetos realizan operaciones (computan) solicitando servicios entre ellos a través del paso de mensajes Todo objeto es una instancia de una clase. Una clase agrupa objetos similares. En la clase se describe el comportamiento de los objetos. Las clases están organizadas en una jerarquía con una única raíz, llamada la jerarquía de herencia.

El secreto: un cambio de visión La POO no es, como muchos afirman, un paradigma distinto del de la programación procedural. Ambas son dos técnicas distintas para abordar la programación imperativa El secreto fundamental consiste en dejar de ver a un programa como un conjunto de acciones y funciones que modifican parámetros, para verlo como un conjunto de objetos con comportamiento, y a estos como estructuras que contienen acciones y funciones

Recomendaciones finales La POO representa un gran avance en la programación, tal como lo fue la programación estructurada en la década de los ‘70. Entre sus ventajas más importante se encuentran un notable aumento de la productividad del programador y de la robustez de los programas

La Programación orientación a objetos es… … una serie de normas, de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el código se pueda reutilizar

IDEA BÁSICA DETRÁS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS Lenguajes imperativos: Son aquellos basados en sentencias, ya sean procedurales, orientados a objetos puros o mixtos. Entre ellos se cuentan Pascal, C, C++, Java, Fortran, Perl y Python. Lenguajes procedurales: Son lenguajes imperativos basados en procedimientos (o rutinas) y funciones. Entre ellos podemos nombrar a C, Fortran, Pascal (estándar) y Basic

Lenguajes orientados a objetos Son lenguajes imperativos basados en clases (algunos, llamados mixtos soportan también el modelo procedural). Entre los lenguajes orientados a objetos puros podemos nombrar a Smalltalk, Eiffel y Java. Entre los mixtos se encuentran C++ y Python.

Lenguajes Funcionales … Son aquellos basados en funciones matemáticas (y no en comandos o sentencias). Podemos nombrar aquí a ML, Haskell y Lisp.

program personas; type persona = record         nombre: string;         apellido: string;         edad: integer     end; procedure inicializar(n, a: string; e: integer; var p: persona); begin     p.nombre := n;     p.apellido := a;     p.edad := e end;

function es_mayor(p: persona): boolean; begin return p function es_mayor(p: persona): boolean; begin     return p.edad >= 18 end; function nombre_completo(p: persona): string; begin     return p.nombre + " " + p.apellido; end; var     p: persona;

begin     inicializar("Juan", "Perez", 25, p);     write(nombre_completo(p));     if (es_mayor(p)) then         writeln (" es mayor de edad.")     else         writeln (" es menor de edad.") end

En los programas procedurales hacemos esto todo el tiempo: definimos estructuras y tipos de datos y luego creamos procedimientos y funciones que toman como parámetros variables de estos tipos y realizan distintas operaciones sobre ellos. Dicho de otra manera: podemos ver a los programas procedurales como un conjunto de procedimientos y funciones que manipulan estructuras de datos pasadas como parámetros

Una visión diferente program personas; type persona = record     nombre: string;     apellido: string;     edad: integer;     procedure inicializar(n, a: string; e: integer);     begin         nombre := n;         apellido := a;         edad := e     end; function es_mayor: boolean;     begin         return edad >= 18     end;

function nombre_completo: string;     begin         return nombre + " " + apellido;     end var     p: persona; begin     p.inicializar("Juan", "Perez", 25);     write(p.nombre_completo);     if (p.es_mayor) then         writeln (" es mayor de edad.")     else         writeln (" es menor de edad.") end.

Una diferencia importante de notación a la hora de usar la estructura de datos definida, es que ya no utilizamos expresiones de la forma funcion(variable), sino que ahora escribimos variable.funcion. Una ventaja adicional es que la notación es más consistente. Al referirnos a p.nombre_completo no podemos saber (porque en realidad no interesa) si nombre_completo es un campo del registro o una función. Esto es realmente importante: en el caso del campo edad este podría ser reemplazado por una función que calcule la edad de la persona, añadiendo un campo que represente la fecha de nacimiento. De ocurrir esto, los programas que usen el tipo persona no requerirían mayores modificaciones, ya que podrían seguir haciendo referencia a p.edad. Esto facilita la independencia de la implementación y el encapsulamiento, uno de los conceptos claves de la POO.

AJUSTANDO NUESTRO VOCABULARIO A lo que antes llamábamos tipo, refiriéndonos a estructuras de datos, ahora lo llamamos clase, entendiendo como tal no sólo las estructuras, sino también el comportamiento asociado (las acciones y funciones asociadas directamente con la estructura de datos). A lo que antes llamábamos variable ahora lo llamamos objeto. Así como las variables son de determinado tipo, los objetos son de determinada clase.

Los procedimientos y funciones definidos dentro de una clase se llaman métodos, en tanto que los campos se denominan atributos. En nuestro ejemplo, podríamos decir que la clase persona tiene los atributos nombre, apellido y edad, y los métodos inicializar, nombre_completo y es_mayor.

Un concepto importante: la herencia En la POO existe la posibilidad de extender el comportamiento de una clase, añadiendo atributos y métodos. El mecanismo utilizado para tal fin se denomina herencia. Siguiendo con nuestro ejemplo, podríamos querer definir una clase empleado. Básicamente un empleado posee todas las características de una persona (tiene nombre y apellido, tiene sentido preguntarse si es mayor de edad, etc.). Sin embargo, un empleado tendrá otros atributos (por ejemplo, un salario, un cargo) y también otros métodos (liquidar_salario, etc.). Es por esto que bastará con definir a la clase empleado heredando de la clase persona (en POO se usa la expresión “un empleado es una persona“), y añadiendo el nuevo comportamiento (métodos y atributos).

ANEXO: Un ejemplo en PHP es un lenguaje con un sistema de tipos dinámico (una característica que lo hace muy simple y rápido para pequeños desarrollos, pero que se vuelve un arma de doble filo en programas complejos). <? function inicializar($nombre, $apellido, $edad) {     $persona['nombre'] = $nombre;     $persona['apellido'] = $apellido;     $persona['edad'] = $edad;     return $persona; } function nombre_completo($persona) {     return $persona['nombre'] . ' ' .$persona['apellido']; } function es_mayor($persona) {     return $persona['edad'] >= 18; } $p = inicializar('Juan', 'Perez', 25); echo nombre_completo($p); if (es_mayor($p)) {     echo " es mayor de edad.\n"; } else {     echo " es menor de edad.\n"; } ?>