1. INSTITUTO TECNOLÓGICO DE MINATITLÁN
• VIDAL RUEDA DAVID
• CARRERA: ING. ELECTRÓNICA
• MATERIA: PROGRAMACIÓN VISUAL.
• DOCENTE. ING. GUILLERMINA JIMÉNEZ RASGADO
2. PROGRAMACIÓN ORIENTADA A OBJETOS
(POO)
• Es un paradigma de programación que
usa los objetos en sus interacciones, para
diseñar aplicaciones y
programas informáticos. Está basado en
varias técnicas,
incluyendo herencia, cohesión, abstracció
n, polimorfismo, acoplamiento y encapsul
amiento. 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.
3.
4. ¿POR QUÉ SE PROGRAMA?
Aprender un programa es un camino creativo nosotros
podemos tomar algunas ideas del siguiente nivel y expresar
soluciones a la sociedad.
Facilita la creación de software de calidad: potencia en
mantenimiento, la extensión y la reutilización.
A través del proceso de programar, nosotros aprendemos
varias habilidades como lectura de crítica, análisis de
pensamiento y creación de síntesis.
Pero nosotros no podemos programar todas las soluciones
con el mismo método eso es porque aparece la paradigma de la
programación.
5.
6. CLASE
• Una clase es un conjunto de objetos que comparten una
estructura y comportamiento comunes.
• Clase representa una abstracción, la esencia que comparten
los objetos.
• Un objeto es un ejemplo de una clase.
• Un objeto no es una clase, y una clase no es un objeto
(aunque puede serlo, p.e. en Smalltalk).
• Las clases actuan como intermediarias entre una abstracción
y los clientes que pretenden utilizar la abstracción. De esta
forma, la clase muestra:
• visión externa de comportamiento (interface), que enfatiza la
abstracción escondiendo su estructura y secretos de
comportamiento.
• visión interna (implementación), que abarca el código que se
ofrece en la interface de la clase.
7. OBJETO
Un objeto es algo de lo que hablamos y
que
podemos manipular.
Existen en el mundo real (o en nuestro
entendimiento del mismo)
Un objeto puede ser creado
instanciando una clase, como ocurre en la
programación orientada a objetos, o
mediante escritura directa de código y la
replicación otros objetos, como ocurre
en la programación basada en prototipos. Del ejemplo anterior
8. HERENCIA:
Es una propiedad que permite que los objetos
sean creados a partir de otros ya existentes,
obteniendo características (métodos y atributos)
similares a los ya existentes. Es la relación entre
una clase general y otra clase mas especifica. Es
un mecanismo que nos permite crear clases
derivadas a partir de clase base, Nos permite
compartir automáticamente métodos y datos
entre clases subclases y objetos. Por ejemplo: Si
declaramos una clase párrafo derivada de un
clase texto todos los métodos y variables
asociadas con la clase texto son
automáticamente heredados por la subclase
párrafo.
9. ATRIBUTO
Los atributos describen el estado
del objeto. Un atributo consta de
dos partes, un nombre de atributo y
un valor de atributo.
Los objetos simples pueden constar
de tipos primitivos, tales como
enteros, caracteres, boolen, etc. Los
objetos complejos pueden constar
de pilas, conjuntos, listas, arrays, etc,
o incluso de estructuras recursivas
de alguno o todos de sus elementos.
Cuando se declara el atributo o variable
miembro euros en la clase Precio de la
siguiente
forma:
public class Precio {
// Declaracion de atributos o variables
miembro
public double euros;
// Declaracion de métodos . . .
}
10. MÉTODO:
Los métodos ( operaciones o servicios ) describen el
comportamiento asociado a un objeto. La ejecución de un
método puede conducir a cambiar el estado del objeto o
dato local del objeto.
Cada método tiene un nombre y un cuerpo que realiza la
acción o comportamiento asociado con el nombre del
método
11. ABSTRACCIÓN
Expresa las características
esenciales de un objeto, las
cuales distinguen a los
objetos de los demás.
Nos permite trabajar con la
complejidad del mundo real
Separaremos el
comportamiento de la
implementación
Es más importante saber qué
se hace en lugar de cómo se
hace:
12. POLIMORFISMO
Es la capacidad de tener métodos
con el mismo nombre, con
comportamientos diferentes,
conocido como la sobre-escritura
de métodos y la sobrecarga de
operadores.
En ella expresa la posibilidad de
que el mismo mensaje, enviado a
objetos distintos, ejecute métodos
distintos.
Esto significa que podemos definir
dentro de dos clases distintas dos
operaciones con el mismo nombre
y aspecto externo, pero con
distintas implementaciones para
cada clase.
Vemos que FiguraGeometrica es
la superClase y Triangulo es la clase hija o
subClase, y por medio
del polimorfismo podemos crear una
instancia de Triangulo de tipo
FiguraGeometrica...
13. INTERFAZ
Es un conjunto de métodos que indican que una
clase tiene un comportamiento particular además
del que hereda de sus superclases.
Se definen un conjunto de métodos sin especificar
su implementación. Cuando una clase implementa
una interfaz debe especificar todos los métodos
contenidos en ella.
Para definir una clase que implementa una interfaz
hay que usar la palabra clave class*
15. CONSTRUCTORES
Java no permite variables miembro de clase ni objetos sin inicializar,
los inicializa siempre con valores por defecto.
La inicialización de objetos requiere el uso de constructores.
El compilador proporciona un constructor público por omisión para
cada clase que se define.
Un constructor es un método especial de la clase que se llama
automáticamente cada vez que se crea un objeto de esa clase su
función es inicializar objetos de la clase.
Al crear un objeto de una clase:
1º Se reserva memoria (operador new)
2º Se inician los atributos del objeto bien a los valores indicados en
la declaración o a los valores por defecto. (atributos numéricos a 0,
alfanuméricos a nulo y referencias a null)
3º Se llama al constructor.
Un miembro de una clase puede ser iniciado con un objeto de otra clase.
16. Características de los constructores
- Los constructores no tienen valor de retorno, ni
siquiera void.
- Su nombre es siempre el mismo que el de la clase. Su
argumento implícito es el objeto que está creando.
- No se hereda.
- No pueden ser declarados final, static, abstract,
sychronized o native.
17. ENCAPSULAMIENTO
Es la propiedad que tienen los objetos, de contener tanto
datos como métodos, los cuales pueden manipular o
cambiar estos datos.
Consiste en separar los aspectos externos de un objeto
(que pueden ser accedidos desde otros objetos) de los
detalles internos de implementación del mismo.
18. ENCAPSULAMIENTO
Es importante porque mediante esta propiedad, los objetos,
tienen el control necesario, de la integridad de los datos
contenidos en estos.
Facilidad de mantenimiento y depuración de los programas.
Los clientes de una clase sólo conocen la interfaz de la misma,
es decir, conocen los prototipos de las operaciones pero no
cómo están implementadas.
Por tanto, si la implementación de una clase varía, y la interfaz
continúa siendo la misma, no es necesario cambiar el código de
los clientes.
19. COHESIÓN
Es una medida de la especialización con la que cuenta un objeto dentro de un
sistema, entre mas alta sea esta, es mejor.
La cohesión tiene que ver con la forma en la que agrupamos unidades de
software en una unidad mayor. Por ejemplo, la forma en la que agrupamos
funciones en una librería, o la forma en la que agrupamos métodos en una
clase, o la forma en la que agrupamos clases en una librería, etc...
Se suele decir que cuanto más cohesionados estén los elementos agrupados,
mejor.
20. ACOPLAMIENTO
El acoplamiento mide el grado de relacionamiento de un módulo
con los demás. A menor acoplamiento, mejor: el módulo en
cuestión será más sencillo de diseñar, programar, probar y
mantener.
En el diseño estructurado, se logra bajo acoplamiento reduciendo
las interacciones entre procedimientos y funciones, reduciendo la
cantidad y complejidad de los parámetros y disminuyendo al
mínimo los parámetros por referencia y los efectos colaterales.
De nuevo, el diseño orientado a objetos nos complica las cosas
con sus tres tipos de módulos. A los métodos, como pasó con la
cohesión, podemos analizarlos con los mismos criterios que a los
módulos del diseño estructurado.
21. MIEMBRO
Los miembros dato
Los valores de los atributos se guardan en los miembros dato o variables de
instancia. Los nombres de dichas variables comienzan por letra minúscula.
Vamos a crear una clase denominada Rectangulo, que describa las características
comunes a estas figuras planas que son las siguientes:
El origen del rectángulo: el origen o posición de la esquina superior izquierda del
rectángulo en el plano determinado por dos números enteros x e y.
Las dimensiones del rectángulo: ancho y alto, otros dos números enteros.
class Rectangulo{ int x; int y; int ancho; int alto; //faltan las funciones miembro }
22. UML
Def. Lenguaje Unificado de Modelado es una notación gráfica para
dibujar diagramas de conceptos de software.
Existen 3 niveles de diagramas en la concepción de un sistema de
software:
Diagrama Conceptual (sobre el dominio del problema)
Diagrama de Especificación sobre el diseño del software
Diagramas de Implementación
Los diagramas de especificación y de implementación tienen una fuerte
conexión con el código fuente
Solo se van
a ver los
últimos 2
23. OBJETIVOS DE LOS DIAGRAMAS
Diagrama de Especificación transformación en código fuente
Diagrama de Implementación descripción de un código fuente
existente
En ambos casos, crear un modelo donde se elimine la
ambigüedad y se dé formalidad
24. NIVEL CONCEPTUAL
Los diagramas conceptuales no están tan fuertemente
ligados con el código fuente.
No sigue reglas semánticas estrictas y por lo tanto su
resultado puede ser ambiguo y sujeto a interpretación.
25. EJEMPLO – NIVEL CONCEPTUAL
Con la frase “un perro es un animal”
Se ve que existen 2 entidades, perro y animal
La relación entre las entidades sería de generalización.
“Un perro es un caso de animal”
El diagrama sería:
Animal
Perro
26. EJEMPLO – NIVEL CONCEPTUAL
El diagrama sugiere que el Perro es una clase de Animal,
ó que el Perro es un caso especial de Animal
Sin embargo, se puede pensar que el perro, como especie
biológica, pertenece al reino animal ( se presta a
interpretaciones)
Animal
Perro
27. NIVEL DE ESPECIFICACIONES
Public class Animal {}
Public class Perro extends Animal {}
Sin embargo, en el nivel de especificaciones este código tiene mas coherencia
de manera que Animal y Perro están conectadas por una relación de herencia
28. El fallo para reconocer el nivel de un diagrama es la
fuente de errores significativos de comunicación entre
programadores y analistas
Un diagrama de nivel conceptual no define el código
fuente, no debe de hacerlo.
Un diagrama de nivel de especificaciones describe la
solución del problema no tiene porqué parecerse a un
diagrama conceptual
29. TIPOS DE DIAGRAMAS EN UML
Diagramas estáticos.- Describen la estructura lógica invariable
de los elementos software representando clases, objetos,
estructuras de datos y las relaciones entre ellas.
Diagramas dinámicos.- Muestran como cambian las entidades
software durante la ejecución, representando el flujo de
ejecución.
Diagramas físicos.- Muestran la estructura física invariable
como archivos fuente, bibliotecas, archivos binarios o de
datos y sus relaciones.
31. DIAGRAMA DE OBJETOS
Objetos
Clase a la que pertenece el objeto
Enlaces
Nodos del arreglo
Muestra los objetos y sus
relaciones en un momento
particular de ejecución del
sistema
32. VENTAJAS DE LA PROGRAMACIÓN ORIENTADA A
OBJETOS
La reutilización de código:
Esta ahorra tiempo en el desarrollo de programas.
Se utiliza software que ya ha sido probado.
Fácil mantenimiento y depuración de programas.
Extensibilidad: posibilidad de ampliar la funcionalidad
de la aplicación de manera sencilla.
Modularidad y encapsulación: el sistema se
descompone en objetos con unas responsabilidades
claramente especificadas.
33. CONCLUSION
La programación orientada a objetos permite la optimización
del código generado gracias a que mediante técnicas de
herencia, atributos éstaticos entre otros permiten, que el
código sea generico de manera que sea reutilizable.
Mediante las técnica aprendida en el presente curso podemos
establecer una solución primitiva de un problema real, tan
solo con relacionarlo con objetos lógicos que séran usados
para el desarrollo del sofware.
Podemos dar a conocer de una forma sencilla los mecanismos
que se usan en este nivel de programación, a personas que
deseen una explicacion rápida y sencilla de lo que es la
programación orientada a objetos.