Programación orientada-objetos

14
PROGRAMACIÓN ORIENTADA OBJETOS FUNDAMENTOS DE LA PROGRAMACIÓN ORIENTADA OBJETOS

Transcript of Programación orientada-objetos

Page 1: Programación orientada-objetos

PROGRAMACIÓN ORIENTADA OBJETOSFUNDAMENTOS DE LA PROGRAMACIÓN ORIENTADA OBJETOS

Page 2: Programación orientada-objetos

1.1 EVOLUCIÓN DE LA PROGRAMACIÓN

• Se dice que el código binario es de "bajo nivel" o "primer nivel" (porque al usar pocos signos logra muy difícilmente expresar cosas complicadas), mientras un lenguaje humano es de "muy alto nivel" (con una cantidad mayor de signos y con reglas combinatorias logra expresar con facilidad cosas muy complicadas). 

Page 3: Programación orientada-objetos

NIVELES DE PROGRAMACION

BAJO NIVEL (Lenguaje maquina)

MEDIO NIVEL (Ensamblador)

ALTO NIVEL (Ensamblador)

Código binario.

0,1

Programación informát

ica.

Ej. Lenguaje

en C.

Programa fuente.

Programa objeto.

Traduce a bajo nivel.

Fácil de usar.

Page 4: Programación orientada-objetos

1.2 CONCEPTOS FUNDAMENTALES DE PROGRAMACIÓN ORIENTADA A OBJETOS

Page 5: Programación orientada-objetos

Programación Orientada a objetos

Clase

Herencia

Objeto Encapsulamiento Claseabstracta

Polimorfismo

Nombre

Atributo

Métodos Concepto

Comportamiento

Publico

Protegido

Privado

Conceptos

Page 6: Programación orientada-objetos

1.2.1 LENGUAJES DE PROGRAMACIÓN ORIENTADA A OBJETOS• Tratan a los programas como conjuntos de objetos que se ayudan entre ellos

para realizar acciones. Entendiendo como objeto al entidades que contienen datos. • El primer lenguaje fue el “Simula 67” creado para hacer simulaciones de

naves.• Lenguajes dinámicos • Los principales lenguajes de programación orientados a objetos son: Ada, C+

+, C#, VB.NET, Clarion, Delphi, Eiffel, Java, Lexico, Objective-C, Ocaml, Oz, PHP, PowerBuilder, Python, Ruby y Smalltalk.

Page 7: Programación orientada-objetos

LOS LENGUAJES DE PROGRAMACIÓN se determinan según:Según su nivel de abstracción.Según la forma de ejecución.Según el paradigma de programación.Según su nivel de abstracción:

a) Lenguajes de bajo nivelb) Lenguajes de medio nivelc) Lenguajes de alto nivel

Según la forma de ejecución.a) Lenguajes compiladosb) Lenguajes interpretados

Según el paradigma de programación.a) Imperativob) Funcionalc) Lógicod) Orientado A Objetos

Page 8: Programación orientada-objetos

• Lenguajes imperativos:I. BASICII. CIII. C++IV. JavaV. C#VI. PerlVII. unerg

• Lenguajes Funcionales:a) Puros:

I. HaskellII. Miranda

b) HíbridosIII. LispIV. SchemeV. OcamlVI. Standard MLVII. MLVIII. Scala 

• Lenguajes orientados a objetos:I. ActionScriptII. AdaIII. C++IV. C#V. VB.NETVI. Visual FoxProVII. ClarionVIII. DelphiIX. HarbourX. EiffelXI. JavaXII. JavaScriptXIII. Lexico (en castellano)XIV. Objective-CXV. OcamlXVI. OzXVII.Perl (soporta herencia

múltiple)XVIII.PHP (en su versión 5)XIX. PythonXX. RubyXXI. SmalltalkXXII.Magik (SmallWorld)

• Lenguajes Lógicos:I. Prolog 

Page 9: Programación orientada-objetos

CARACTERÍSTICAS DE LOS LENGUAJES OOP

• Herencia múltiple

• Eficiencia.

• Asignación de tipos.

• Manejo de memoria.

• Encapsulación

Page 10: Programación orientada-objetos

1.3 RELACIONES ENTRE CLASES Y OBJETOSRelaciones entre objetos:• Las relaciones entre objetos abarcan las operaciones, resultados y

suposiciones que unos hacen sobre los otros.• Links: Son conexiones físicas o conceptuales entre objetos. Denota la

asociación específica por la que un objeto (cliente) usa o solicita el servicio de otro objeto (servidor). El paso de mensajes entre objetos los sincroniza.

• Agregaciones: Denota relaciones todo/parte, con capacidad para gobernar desde el todo las partes. Es equivalente a la relación "tener un". El todo puede contener a la parte.

• Agregación es conveniente en las ocasiones en que el encapsulamiento de las partes es prioritario. Si se requiere que las relaciones entre objetos estén vagamente acopladas, se utilizan links.

Page 11: Programación orientada-objetos

Relaciones entre clases:• Representan tipos de compartición entre clases, o relaciones semánticas.• Asociación: Indica relaciones de mandato bidireccionales. Conlleva dependencia semántica y no

establece una dirección de dependencia. Tienen cardinalidad.• Herencia: Por esta relación una clase (subclase) comparte la estructura y/o comportamiento definidos

en una (herencia simple) o más (herencia múltiple) clases, llamadas superclases.• Representa una relación del tipo "es un" entre clases.• Una subclase aumenta o restringe el comportamiento o estructura de la superclase (o ambas cosas).• Una clase de la que no existen ejemplos se denomina {\it abstracta}.

• Agregación: Representa una relación del tipo "tener un" entre clases. Cuando la clase contenida no existe independientemente de la clase que la contiene se denomina agregación por valor y además implica contenido físico, mientras que si existe independientemente y se accede a ella indirectamente, es agregación por referencia.

• Uso: Es un refinamiento de la asociación donde se especifica cual es el cliente y cual el servidor de ciertos servicios, permitiendo a los clientes acceder sólo a las interfaces públicas de los servidores, ofreciendo mayor encapsulación de la información.

• Ejemplificación: Se usa en lenguajes que soportan genericidad (declaración de clases parametrizadas y argumentos tipo template). Representa las relaciones entre las clases parametrizadas, que admiten parámetros formales, y las clases obtenidas cuando se concretan estos parámetros formales, ejemplificados o inicializados con un ejemplo.

• Metaclases: Son clases cuyos ejemplos son a su vez clases.

Page 12: Programación orientada-objetos

Relaciones entre clases y objetos:• Todo objeto es el ejemplo de una clase, y toda clase tiene 0 o más objetos.• Algorítmicamente, las clases son descripciones netamente estáticas o plantillas

que describen objetos. Su rol es definir nuevos tipos conformados por atributos y operaciones.

• Por el contrario, los objetos son instancias particulares de una clase. Las clases son una especie de molde de fábrica, en base al cual son construidos los objetos. Durante la ejecución de un programa sólo existen los objetos, no las clases.

• La declaración de una variable de una clase NO crea el objeto.

Page 13: Programación orientada-objetos

1.4 EL PAPEL DE CLASES Y OBJETOS EN EL ANÁLISIS Y EL DISEÑO• Análisis orientado a objetos: Proceso que modela el dominio del problema

identificando y especificando un conjunto de objetos semánticos que interaccionan y se comportan de acuerdo a los requisitos del sistema.

Objetivo: El objetivo del AOO es modelar la semántica del problema en términos de objetos distintos pero relacionados. • Diseño orientado a Objetos: Proceso que modela el dominio de la solución.Objetivo: El objetivo es la generación de una descripción sobre como sintetizar los objetos extraídos del domino de la solución al problema.

• Construcción de un sistema software“La construcción de un sistema software, con independencia de su tamaño, de sus características funcionales y de la tecnología elegida, consta de una serie de fases que abarcan desde su concepción hasta su retirada, definiendo un espacio temporal que recibe el nombre de ciclo de vida del software.”(García Peñalvo, Francisco José, 1998)

Page 14: Programación orientada-objetos

• El dominio del problema y el dominio de la solución del problema son términos que están presentes en el análisis y el diseño de un software, sin embargo, cabe recalcar, que estos términos anteriormente dichos, deben estar estructurados por las clases y los objetos, para así, poderse conformar, y a su vez, poder ser parte del análisis y diseño de un software.

EL papel que desempeñan las clases y los objetos son:• Las clases y los objetos son abstracciones claves del problema.• Al ser parte del dominio del problema, se coinvierten también, en

mecanismos de implantación.• Representan un marco de referencia lógico del sistema.• La relación de estos 2 resuelven problemas de diseño en un determinado

contexto.

EN CONCLUSIÓN…