2. 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).
3. 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.
6. 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.
7. 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 nivel
b) Lenguajes de medio nivel
c) Lenguajes de alto nivel
Según la forma de ejecución.
a) Lenguajes compilados
b) Lenguajes interpretados
Según el paradigma de programación.
a) Imperativo
b) Funcional
c) Lógico
d) Orientado A Objetos
8. • Lenguajes imperativos:
I. BASIC
II. C
III. C++
IV. Java
V. C#
VI. Perl
VII. unerg
• Lenguajes Funcionales:
a) Puros:
I. Haskell
II. Miranda
b) Híbridos
I. Lisp
II. Scheme
III. Ocaml
IV. Standard ML
V. ML
VI. Scala
• Lenguajes orientados a
objetos:
I. ActionScript
II. Ada
III. C++
IV. C#
V. VB.NET
VI. Visual FoxPro
VII. Clarion
VIII. Delphi
IX. Harbour
X. Eiffel
XI. Java
XII. JavaScript
XIII. Lexico (en castellano)
XIV. Objective-C
XV. Ocaml
XVI. Oz
XVII.Perl (soporta herencia
múltiple)
XVIII.PHP (en su versión 5)
XIX. Python
XX. Ruby
XXI. Smalltalk
• Lenguajes Lógicos:
I. Prolog
9. CARACTERÍSTICAS DE LOS LENGUAJES OOP
• Herencia múltiple
• Eficiencia.
• Asignación de tipos.
• Manejo de memoria.
• Encapsulación
10. 1.3 RELACIONES ENTRE CLASES Y OBJETOS
Relaciones 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.
11. 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.
12. 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.
13. 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)
14. • 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…