Está en la página 1de 72

CAPITULO 1, 2 Y 3

Programación
orientada
a objetos
CAPITULO 1
la complejidad
Del software

 Es una propiedad esencial no accidental


 Se deriva de cuatro elementos
Complejidad del dominio del problema.
La dificulta de gestionar el dominio del desarrollo.
La posible flexibilidad a través del software
PRIMER PROBLEMA:

 Los usuarios no tienen la precisión para exponer


sus ideas o necesidades acerca de su software.
 De acuerdo a esto los desarrolladores hacen
suposiciones en lugar de tener una perspectiva
real de lo que el usuario requiere .
SEGUNDO PROBLEMA:

 La dificultad de gestionar el proceso de


desarrollo.
 Es necesario descomponer el problema en
centenares de módulos independientes
SEGUNDO PROBLEMA:

 La flexibilidad a través del software.


 Tenemos en cuenta otros tipos de lenguajes de
programación que facilitan el rendimiento
solicitado para una implementación
Crisis del software
o En 1968 se dio a conocer que el software era
caro poco estable y escaso.
o Pese a las metodologías y estructuras que
ahora se utilizan los problemas de diseño aun
prevalecen.
CICLO DE VIDA
DEL SOFWARE
Definición de objetivos

Diseño general

Programación (programación e implementación

Integración

Prueba beta (o validación)

Implementación

Mantenimiento
factores de la calidad
el software

Eficiencia Corrección
Transportabilidad Robustez
Verificabilidad Extensibilidad
Integridad Reutilización
Fácil de utilizar Compatibilidad
programación y abstracción

un programa es una descripción


abstracta de un procedimiento o
fenómeno que existe o sucede en el
mundo real.
papel de la abstracción

Los programadores han tenido que luchar con


el problema de la complejidad durante mucho
tiempo desde el nacimiento de la informática.
La abstracción es la capacidad para aislar y
encapsular la información, el diseño y
ejecución.
PROGRAMACION ESTRUCTURADA

Se emplea desde el principio de la década de los setenta, un programa


estructurado se construye dividiendo el programa en funciones, esta
división permite escribir código mas claro y mantener el control
sobre cada función.
PARADIGMA DE PROGRAMACION:

PARADIGMAS: conjunto de teorías, y métodos


que juntos representan un medio de organización
del conocimiento. La orientación a objetos
reconsidera nuestra pensamiento sobre la
computación, sobre lo que significa realizar
computación y sobre cómo se estructura la
información dentro de la computadora.
Jenkins y Glasgow sugieren que existen cuatro
clases de estilos de programación:
1. Orientado a procedimientos (algoritmos)
2. Orientado a objetos (clases y objetos)
3. Orientado a lógica (expresado en cálculo
de predicados)
4. Orientado a reglas (reglas if-then)
RAZONES FUNDAMENTALES EN POO

La OO (orientada a objetos) es especialmente adecuada


para realizar determinadas aplicaciones (realización de
prototipos y simulación de programas)

Mecanismos de encapsulación de POO, soportan un grado


alto de reutilización de código.

Interfaces de usuario gráficos (por iconos) y visuales.


(manipulan entrada y salida del usuario
PROGRAMACION ORIENTADA A OBJETOS

Conjunto de disciplinas que desarrollan y modelizan


software que facilitan la construcción de sistemas
complejos a partir de componentes
Los conceptos y herramientas orientados a objetos son
tecnologías que permiten que los problemas del mundo
real sean expresado de modo fácil y natural
ABSTRACCION

Es uno de los medios con el cual nos


enfrentamos con la complejidad inherente al
software.
ENCAPSLAMIENTO

Propiedad que permite asegurar que el contenido de la


información de un objeto está oculta al mundo exterior
El objeto A no conoce lo que hace le objeto B, y
viceversa.
MODULARIDAD
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 si y de las
restantes partes.
JERARQUIA

Propiedad que permite una ordenación de las abstracciones. Las


dos jerarquías mas importantes de un sistema complejo son:
Estructura de clase
Estructura de objetos
POLIMOSFISMO

Propiedad que indica, literalmente, la posibilidad de


que una entidad tome muchas formas.

Permite referirse a objetos de clases diferentes


mediante el mismo elemento de programa y realizarla
misma operación de diferentes formas, según sea el
objeto que se referencia en ese momento
OTRAS PROPIEDADES
El modelo objeto ideal no sólo tiene las propiedades
anteriormente citadas, existes las siguientes:
Concurrencia
Persistencia
Genericidad
Manejo de excepciones
REUTILIZACION DEL SOTFWARE

La programación orientada a objetos


proporciona un mecanismo para
construir componentes de software
reutilizables que pueden ser
interconectados entre si y de esta
forma lograr grandes proyectos de
software.
CAPITULO 2
MODULARIDAD

•REGLAS DE MODULARIDAD:
•UNIDADES MODULARES
DISEÑO DE MODULOS
 División de un sistema grande en módulos más
pequeños y a la vez manejables, no siempre esta
división es garantía de un sistema bien garantizado.

Como la propiedad de un sistema que ha sido


descompuesto en un conjunto de módulos cohesivos y
débilmente acoplados.
ACOPLAMIENTO DE MODULOS

El acoplamiento es una medida del grado de


interdependencia entre módulos. El objetivo es
minimizar el acoplamiento entre módulos, es decir,
minimizar su interdependencia, de modo que un
módulo sea afectado lo menos posible por la estructura
de otro módulo.
Sin embargo, dado que un sistema debe realizar un
conjunto de funciones o tareas de un modo
organizado, no puede constar de un conjunto de
módulos totalmente desacoplados.

Como define Booch, un sistema modular débilmente


acoplado facilita:

1. La sustitución de un módulo por otro, de modo


que sólo unos pocos módulos serán afectados por
el cambio
2. El seguimiento de un error y el aislamiento del
módulo defectuoso que produce ese error
COHESIÓN DE MÓDULOS

Describe la naturaleza de las interacciones dentro


de un módulo software. Un módulo cohesivo solo
hace (idealmente) una cosa.
TIPOS DE DATOS
Un tipo de dato es un conjunto de valores y conjunto de
operaciones definidas por esos valores.
Un valor depende de su representación y de la
interpretación de la representación, por lo que una definición
informal de un tipo de dato es:
Representación + operaciones.
Cada lenguaje de programación incorpora una colección de
tipos de datos fundamentales, que incluyen normalmente
enteros, reales, carácter, etc.
La mayoría de los lenguajes tratan las variables y
constantes de un programa como instancias de un tipo de
dato.
ABSTRACCION EN LENGUAJES
DE PROGRAMACION
Los lenguajes de programación son herramientas mediante los cuales
diseñadores de lenguajes pueden implementar los modelos abstractos.

La abstracción ofrecida por los lenguajes de programación se pueden dividir


en dos categorías:
1. Abstracción de datos (perteneciente a los datos).
2. Abstracción de control (perteneciente a las estructuras de control).
ABSTRACCION DE CONTROL
•Describe el orden en que se ejecutan las sentencias o
grupos de sentencias (unidades de programa). Las
unidades de programa se utilizan como bloques
básicos.

• Los subprogramas constituyen una herramienta


potente de abstracción, ya que durante su
implementación el programador describe como
funcionan los subprogramas.

• Las abstracciones y estructuras de control se


clasifican en estructuras de control a nivel de sentencia
y a nivel de unidades
ABSTRACCION PROCEDIMENTAL

Se basa en la utilización de procedimientos o funciones


sin preocuparse de cómo se implementan. Esto es posible
si conocemos que hace el procedimiento, la síntesis y
semántica.
ABSTRACCION DE DATOS
Es la técnica de programación que permite inventar o definir
nuevos tipos de datos (tipos de datos definidos por el usuario)
adecuados a la aplicación que se desea realizar.
La abstracción de datos es una técnica muy potente que permite
diseñar programas mas cortos, legibles y flexibles.
Los tipos de datos son abstracciones y el proceso de construir
nuevos tipos se llama abstracciones de datos. Los nuevos tipos de
datos definidos por el usuario se llaman Tipos Abstractos de Datos
y proporcionan un mecanismo adicional mediante el cual se realiza
una separación clara entre el interfaz y la implementación del tipo
de dato.

Un tipo abstracto de dato consta de:


1. la representación: elección de las estructuras de datos.
2. las operaciones: elección de los algoritmos.
TIPO ABSTRACTO DE DATOS
Un TAD (tipo abstracto de datos) se compone de
estructuras de datos y los procedimientos que manipulan
esas estructuras de datos.
TAD = representación (datos) + operaciones (funciones
y procedimientos)
Las operaciones desde un enfoque orientado a objetos
se suelen denominar métodos.
La estructura de un tipo abstracto de dato (clase), desde
un punto de vista global, se compone de interfaz y de la
implementación
 Las estructuras de datos reales elegidas para
almacenar la representación de un tipo abstracto de
datos son invisibles a los usuarios.
 Los algoritmos utilizados para implementar cada
una de las operaciones de los TAD están
encapsulados dentro de los propios TAD
 La característica de ocultación de la información
del TAD significa que los objetos tienen interfaces
públicos.
 Sin embargo, las representaciones e
implementaciones de esos interfases son privadas
VENTAJAS DE LOS TIPOS ABSTRACTOS DE DATOS

Los TAD proporcionan varios beneficios al programador


como los siguientes:

Permite una mejor conceptualización y modelamiento del


mundo real. mejora la representación y facilita la
comprensión. Clarifica los objetos basados en estructuras y
comportamiento comunes.
Mejora la robustez del sistema.

1. Mejora el rendimiento
2. Separa la implementación de la especificación.
3. Permite la extensibilidad del sistema
Cuando se escribe un programa para resolver
un problema, con el enfoque tradicional se
pasa directamente de la realidad a una
implementación en el lenguaje de
programación. Con los TAD se establece un
nivel intermedio, donde se quiere moderar lo
esencial de la realidad sin comprometerse
con detalles de implementación. De hecho, es
posible consideras diferentes implantaciones.
IMPLEMENTACION DEL TAC
Se hace por medio de funciones, con ayuda de la sentencia
return.
C no es capaz de realizar verificaciones de tipos durante el
proceso de compilación separada.
No existe en C ninguna estructura para encapsular datos y
funciones en una sola entidad.
como C no soporta el tipo de dato clase la implementación
del TAD se realiza mediante typedef, los datos con struct y
la implementación de las operaciones con un conjunto de
funciones.
IMPLEMENTACION DEL TAC C++

En C++ la herramienta de abstracción de datos que permite


la creación de nuevos tipos se denomina clase (class). una
clase en C++ consta de miembros dato y funciones
miembro, a través de los cuales se puede acceder a los
detalles internos de la clase.

Una clase se define como una estructura en C (struc), con


la diferencia de que puede contener tres secciones: publica,
privada y protegida, y que pude definirse con las palabras
reservadas struc y class.
DEFINICION DE UNA CLASE PILA EN C++

La clase pila se define en el archivo de cabecera


pila.h, para que este pueda ser utilizado por otros
programas.
Las funciones que manipulan la pila son: meter,
sacar, cima y vacía. Si estas operaciones se desean
que estén disponibles a los usuarios de la pila,
entonces se deben definir como publicas (mediante
la palabra reservada public)
La implementación de un tipo abstractos de datos
es oculta.
En la mayoría de los lenguajes de programación
orientados a objetos, los tipos abstractos de datos se
CAPITULO 3
QUE ES LA POO
La programación Orientada a objetos (POO) es una forma
especial de programar, más cercana a como expresaríamos las
cosas en la vida real.
Grady Booch, autor del método de diseño orientado a objetos,
define la POO como:
Un método de implementación en el que los programas se
organizan como colecciones cooperativas de objetos, cada uno
de los cuales representan una instancia de alguna clase, y cuyas
clases son todas miembros de una jerarquía de clases unidas
mediante relaciones de herencia.
3 importantes partes en la definición de la POO
Utiliza objetos, no algorítmicos
Cada objeto es una instancia de una clase
Las clases se relacionan unas con otras.
OBJETO
Podemos definir un objeto como un conjunto complejo
de datos y programas que poseen estructura y forman
parte de una organización.
Un objeto no es un dato simple, sino que contiene en su
interior cierto número de componentes bien
estructurados.
el objeto retiene cierta información y conoce como
realizar ciertas operaciones. La encapsulación de
operaciones es muy importante ya que esta permite
incluir en una sola entidad la información y las
operaciones que operan sobre esa información
METODOS

Los métodos son las operaciones que


pueden realizarse sobre el objeto, que
normalmente estarán incorporados en
forma de programas (código) que el
objeto es capaz de ejecutar y que
también pone a disposición de sus
descendientes a través de la herencia.
METODOS Y MENSAJES

Son las funcionalidades asociadas a los objetos. Cuando


estamos programando las clases las llamamos métodos.
Los métodos son como funciones que están asociadas a
un objeto. Los procedimientos y funciones denominados
métodos o funciones miembro, determinan como actúan
los objetos cuando reciben un mensaje. Un mensaje es la
acción que hace un objeto. Un método es el
procedimiento que se invoca para actuar sobre un objeto
un método especifica como se ejecuta un mensaje.
CLASES

Una clase es la descripción de un conjunto de objetos; consta de


métodos y datos que resumen características comunes de un conjunto de
objetos. Una clase es la declaración de un tipo de objeto Las clases son
declaraciones de objetos, también se podrían definir como abstracciones
de objetos.
Cada vez que se construye un objeto a partir de una clase se esta
creando lo que es una instancia de esa clase lo que quiere decir que un
objeto no es mas que una instancia de una clase.
DEFINICION DE UN OBJETO

Un objeto es una abstracción de cosas (entidades)


dentro de el mundo real, tales que:
1. Todas las cosas del mundo real dentro de un
conjunto tiene las mismas características.
2. Todas las instancias siguen las mismas reglas.

El objeto consta de
Estado (atributos).
Operaciones o comportamiento (métodos
invocados por mensajes).
IDENTIFICACION DE UN OBJETO

La identificación de objetos se tiene examinando la


descripción del problema (análisis gramatical) y
localizando los nombres o cláusulas nominales.
Una vez identificados los objetos es preciso
identificar los atributos y las separaciones que actúan
sobre ellos.
Los atributos describen la abstracción de
características individuales que poseen todos los
objetos
DURACION DE LOS OBJETOS

Los objetos son entidades que existen en el


tiempo; por ello deben ser creados o
instanciados (a través de otros objetos).
Estas operaciones se hace a través de
operaciones especiales llamadas constructores
en C++ o inicializadores.
OBJETOS FRENTE A CLASES

Una variable es una instancia de un tipo; al


igual que un objeto es una instancia de una
clase; sin embargo, una clase es mas
expresiva que un tipo.
DIFERENCIAS ENTRE CLASE
Y OBJETOS

Un objeto es un simple elemento, no importa lo complejo que pueda s


Los objetos tienen las siguientes características:
1.Se agrupan en tipos llamados clases
2.Tiene datos internos que definen su estado actual
3.Soportan ocultación de datos
4.Pueden heredar propiedades de otros objetos
5.Pueden comunicarse con otros objetos pasando mensajes
6.Tiene métodos que definen su comportamiento
DATOS INTERNOS

Una propiedad importante de los objetos es


que almacenan información de su estado en
forma de datos internos.
A veces se denominan a las variables que
representan a los objetos variables de estado.
COMUNICACIÓN ENTRE OBJETOS

ACTIVACIÓN DE OBJETOS
MENSAJE
PASO DE MENSAJES
ESTRUCTURA INTERNA DE UN OBJETO

La estructura interna de un objeto consta de dos componentes básicos

1. Atributos
2. Métodos (operaciones o servicios
ATRIBUTOS
Describen el estado del objeto; consta de dos partes:
* Nombre del atributo
•Valor del atributo
Los objetos simples pueden constar de tipos
primitivos como enteros, carácter, reales, boolean o
tipos simples definidos por el usuario. Los objetos
compuestos pueden constar de pilas, conjuntos, listas,
etc.
METODOS
Describen el comportamiento asociado a un objeto.
Representen las acciones que pueden realizarse por
un objeto o sobre un objeto.
Cada método tiene un nombre y un cuerpo que
realiza la acción o comportamiento asociado con el
nombre del método.
CLASES

Descripción abstracta de un grupo de objetos cada uno


de los cuales se diferencia por un estado especifico y es
capaz de realizar una serie de operaciones.
Las clases son una descripción abstracta de un grupo
de objetos que comparten características (atributos) y
operaciones (métodos).
Las propiedades de una clase deben ser significativas
dentro del entorno de la aplicación, es decir deben
ayudarnos en la identificación clara y unívoca de cada
uno de los objetos.
COMPARACION CON TABLAS DE DATOS

Una clase se puede considerar como la extensión de


un registro. al igual que una clase, una tabla define los
nombres y los tipos de datos de la información que
contenga.
Una clase será un módulo y un tipo. Como módulo la
clase encapsula los recursos que ofrece a otras clases
(sus clientes). Como tipo describe un conjunto de
objetos o instancias que existen en tiempo de ejecución.
Si deseáramos una clasificación de frutas, las propiedades
asociadas a cada una serían: color, tamaño, sabor ( ácido,
dulce), jugosidad, vitaminas que brindan, entre otras. Estas
características identifican claramente cada grupo de frutas. Si
la aplicación es armar una canasta de frutas se tendrá en
cuenta aspecto concordante (obviamente no pondremos un
banano en ella pues con las otras frutas se aplastaría),
durabilidad, tamaño, etc. A la hora de pensar en las
características tal vez logremos obtener demasiadas, así que
trataremos de poner las más significativas para realizar todas
las operaciones que requiera la aplicación.
Los objetos ocupan espacio en memoria, y en consecuencia
existen en el tiempo, y deberán crearse.
Dos operaciones comunes en cualquier clase son:
Constructor: una operación que crea un objeto y / o analiza su
estado.
Destructor: una operación que libera el estado de un objeto y / o
destruye el propio objeto
HERENCIA
Permite a los objetos ser construidos a partir de
otros objetos. Es decir, la capacidad de un objeto
para utilizar las estructuras de datos. El objetivo
final es la reutilizabilidad o reutilización del
código ya desarrollado.
La herencia supone una clase base y una
jerarquía de clases que contienen las clases
derivadas de la clase base.
La herencia nos permite crear estructuras
jerárquicas de clases donde es posible la creación
de sub-clases que incluyan nuevas propiedades y
atributos. Estas sub-clases admiten la definición
de nuevos atributos, así como crear, modificar o
inhabilitar pro
TIPOS DE HERENCIA
Existen dos mecanismos de herencia utilizados
comúnmente en POO: herencia simple y herencia múltiple.
Herencia simple. Un objeto puede heredar datos y métodos
de una única clase, así como añadir o quitar
comportamientos de la clase base.
Herencia múltiple: es la propiedad de una clase de adquirir
datos y métodos de más de una clase.
Esta característica suele ser común a la mayoría de los
lenguajes OOP, aunque introduce un problema al existir la
posibilidad de que el objeto sucesor herede el mismo
atributo, aunque con distinto tipo y valor, de mas de un
predecesor. Alguno de los lenguajes de programación
solucionan este problema de forma automática, aunque los
más populares generan un error en el tiempo de compilación.
Recomendamos que se examinen con cuidado las clases para
evitar en lo posible estos errores.
CLASES ABSTRACTAS

Permite actuar como un depósito de métodos y


atributos compartidos para las subclases de nivel
inferior.
Las clases abstractas no tienen instancias
directamente. Se utilizan para agrupar otras clases y
capturar información que es común al grupo.
La clase abstracta puede incluir métodos
implementados y no implementados o abstractos,
miembros dato constantes y otros no constantes.
SOBRECARGA
Es una propiedad que describe una característica adecuada que
utiliza el mismo nombre de operación para representar
operaciones similares que se comportan de modo diferente
cuando se aplican a clases diferentes.

En lenguajes de programación estructurados o convencionales


soportan sobrecarga para algunas de las operaciones de tipos de
datos dentro de las cuales están:
enteros
reales
caracteres
en los lenguajes orientados a objetos se soportan
estas operaciones y además las estructuras de
datos ya que hacen disponible la sobrecarga para
cualquier tipo de objeto.
LIGADURA DINAMICA

los lenguajes de programación orientada a objetos


tiene la capacidad de poder ejecutar ligadura tardía
(dinámica), al contrario que los lenguajes imperativos
que emplean ligadura (temprana).

la ligadura estática permite un tiempo de ejecución


mas rápido que la ligadura dinámica que necesita
resolver estos enlaces en tiempos de ejecución , sin
embargo en la ligadura estática se ha de especificar
en tiempo de compilación las operaciones exactas a
que responderá una invocación del método especifica
así como conocer sus tipos.
OBJETOS COMPUESTOS

EJEMPLO
NIVELES DE PROFUNDIDAD
POLIMOSFISMO
Una de las características fundamentales de la OOP es el
polimorfismo, que es la posibilidad de construir varios métodos con
el mismo nombre, pero con relación a la clase a la que pertenece
cada uno, con comportamientos diferentes. Esto conlleva la
habilidad de enviar un mismo mensaje a objetos de clases
diferentes. Es la habilidad de crear programas que son
independientes de la forma de los objetos que manipulan.

El polimorfismo es una nueva característica aportada por la OOP.


Esta propiedad indica la posibilidad de definir varias operaciones
con el mismo nombre, diferenciándolas únicamente en los
parámetros de entrada. Dependiendo del objeto que se introduzca
como parámetro de entrada, se elegirá automáticamente cual de las
El polimorfismo y la encapsulación de
datos están íntimamente ligados y nos
permiten un mayor grado de
mantenibilidad y reusabilidad que los
lenguajes tradicionales

También podría gustarte