Programación Orientada a Objetos

Rolando Steep Quezada Martinez
Rolando Steep Quezada MartinezGerente de Tecnología em Centro Netec Chile
Programación orientada a objetos Ing. Rolando Steep Quezada Martínez [email_address] Programación Básica en Java y Programación Orientada a Objetos
Calidad del software   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],OBJETIVO Buenas propiedades internas Satisfacer factores externos
Factores de calidad del software ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
Tecnología de objetos ,[object Object],[object Object],[object Object],[object Object],[object Object]
 
¿Qué es la programación orientada a objetos? ,[object Object],[object Object]
Resolución de problemas “con orientación a objetos” ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Características de POO ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
Objetos ,[object Object],[object Object],[object Object]
Clases ,[object Object],[object Object]
Clases ,[object Object],[object Object],[object Object],[object Object],Implementaciones
Clases y objetos PERRO raza, color... come, ladra... RAMBO bulldog gris come caviar ladra fuerte  En el mundo real  En OOP CLASE define datos y métodos OBJETO ocupa espacio y dura un tiempo
Clases, UML y Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
Atributos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
Métodos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
Constructores ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
Creación de objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],Control de acceso public class A{ public int at1; private int at2; … } public protected package private A a; A = new A() ; a.at1 = 6 //OK a.at2 = 5 //ERROR
Paquetes ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Resumen ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
1 de 26

Recomendados

Multitarea por
MultitareaMultitarea
MultitareaRolando Steep Quezada Martinez
2K visualizações33 slides
programacion orientada a objetos por
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosale8819
16.1K visualizações53 slides
PROGRAMACIÓN ORIENTADA A OBJETOS por
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPEDRO OSWALDO BELTRAN CANESSA
5.2K visualizações53 slides
Programación 3: clases derivadas y polimorfismo por
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoAngel Vázquez Patiño
11.7K visualizações32 slides
Aprendiendo objetos en c++ por
Aprendiendo objetos en c++Aprendiendo objetos en c++
Aprendiendo objetos en c++Aldo Hernán Zanabria Gálvez
481 visualizações23 slides
Programacion Orientada a Objetos por
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a ObjetosCesar David Fernandez Grueso
117.7K visualizações31 slides

Mais conteúdo relacionado

Mais procurados

Programación 1: modularización por
Programación 1: modularizaciónProgramación 1: modularización
Programación 1: modularizaciónAngel Vázquez Patiño
6K visualizações33 slides
8.Clases y objetos Java por
8.Clases y objetos Java8.Clases y objetos Java
8.Clases y objetos JavaRamiro Estigarribia Canese
2K visualizações15 slides
Programación 3: Clases y objetos en Java por
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaAngel Vázquez Patiño
7.4K visualizações24 slides
Clases y Objetos por
Clases y ObjetosClases y Objetos
Clases y ObjetosXavier Ochoa
7.1K visualizações49 slides
Encapsulamiento por
EncapsulamientoEncapsulamiento
EncapsulamientoWhaleejaa Wha
2.8K visualizações28 slides
Definición de clases en POO por
Definición de clases en POODefinición de clases en POO
Definición de clases en POOGloria Isabel Bautista Lasprilla
1.1K visualizações15 slides

Mais procurados(19)

Programación 3: Clases y objetos en Java por Angel Vázquez Patiño
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
Angel Vázquez Patiño7.4K visualizações
Clases y Objetos por Xavier Ochoa
Clases y ObjetosClases y Objetos
Clases y Objetos
Xavier Ochoa7.1K visualizações
Encapsulamiento por Whaleejaa Wha
EncapsulamientoEncapsulamiento
Encapsulamiento
Whaleejaa Wha2.8K visualizações
Poo 1 por Yordany Pirela
Poo 1Poo 1
Poo 1
Yordany Pirela1.4K visualizações
ProgramacióN Orientada A Objetos por Patricio Abad
ProgramacióN Orientada A ObjetosProgramacióN Orientada A Objetos
ProgramacióN Orientada A Objetos
Patricio Abad3.4K visualizações
Conceptos poo (presentación1) por programadorjavablog
Conceptos poo (presentación1)Conceptos poo (presentación1)
Conceptos poo (presentación1)
programadorjavablog6.6K visualizações
Constructor Y Destructor por Tecnologico
Constructor Y DestructorConstructor Y Destructor
Constructor Y Destructor
Tecnologico19.6K visualizações
Programación Orientada a Objetos por UVMVirtual
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
UVMVirtual7.7K visualizações
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez por .NET UY Meetup
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup1.1K visualizações
Clase 4 JAVA 2012 por José Braganza
Clase 4 JAVA 2012Clase 4 JAVA 2012
Clase 4 JAVA 2012
José Braganza751 visualizações
Programacion Orientada a Objetos por Octavio Perez Siliceo
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
Octavio Perez Siliceo2.2K visualizações
Programación orientada a objetos con c++ prev por jtk1
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prev
jtk11.2K visualizações
Programación orientada a objetos por Erick Aguila Martínez
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
Erick Aguila Martínez642 visualizações
Programacion Orientada a Objetos por chutas666
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
chutas6663.6K visualizações
Diapositiva estructura de datos unidad 1 por Ezer Ayala Mutul
Diapositiva estructura de datos unidad 1Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1
Ezer Ayala Mutul827 visualizações

Similar a Programación Orientada a Objetos

Programación Orientada a Objetos en Java - Parte I 2015 por
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Renny Batista
3.4K visualizações38 slides
2introduccionallenguajejava 141109171757-conversion-gate02 por
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02Krizztiina Pacheko
157 visualizações20 slides
2) introduccion al lenguaje java por
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
1.9K visualizações20 slides
INTRODUCCION LENGUAJE JAVA por
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAKarla Estefania Villanueva Epigmenio
354 visualizações20 slides
Unidad 2 ProgramacióN Orientada A Objetos (Repaso) por
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Sergio Sanchez
3.4K visualizações34 slides
Proyecto en android completado por
Proyecto en android completadoProyecto en android completado
Proyecto en android completadoKai Exo
808 visualizações27 slides

Similar a Programación Orientada a Objetos(20)

Programación Orientada a Objetos en Java - Parte I 2015 por Renny Batista
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
Renny Batista3.4K visualizações
2introduccionallenguajejava 141109171757-conversion-gate02 por Krizztiina Pacheko
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
Krizztiina Pacheko157 visualizações
2) introduccion al lenguaje java por Margarita Romero
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
Margarita Romero1.9K visualizações
Unidad 2 ProgramacióN Orientada A Objetos (Repaso) por Sergio Sanchez
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Sergio Sanchez3.4K visualizações
Proyecto en android completado por Kai Exo
Proyecto en android completadoProyecto en android completado
Proyecto en android completado
Kai Exo808 visualizações
03 Oop por Network Sens
03   Oop03   Oop
03 Oop
Network Sens573 visualizações
manual de C# por Brendita Martinez
manual de C#manual de C#
manual de C#
Brendita Martinez176 visualizações
Manual de c# por Ana Ruth G H
Manual de c#Manual de c#
Manual de c#
Ana Ruth G H802 visualizações
Manual c# 2 por Elizabeth Reyna
Manual c# 2Manual c# 2
Manual c# 2
Elizabeth Reyna321 visualizações
Benita ppp unidad 1 por TAtiizz Villalobos
Benita ppp unidad 1Benita ppp unidad 1
Benita ppp unidad 1
TAtiizz Villalobos405 visualizações
Poo Java por eccutpl
Poo JavaPoo Java
Poo Java
eccutpl11.1K visualizações
Lenguaje de Programación Orientada a Objetos por Marielena Lujano
Lenguaje  de  Programación  Orientada  a Objetos Lenguaje  de  Programación  Orientada  a Objetos
Lenguaje de Programación Orientada a Objetos
Marielena Lujano690 visualizações
Programacion orientada a objetos 1 por mellcv
Programacion orientada a objetos 1Programacion orientada a objetos 1
Programacion orientada a objetos 1
mellcv668 visualizações
Contructores en java(grupo 8) por Manuel Ch.
Contructores en java(grupo 8)Contructores en java(grupo 8)
Contructores en java(grupo 8)
Manuel Ch.4.3K visualizações
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf por MariaTeresaGarznPrez
PROGRAMACION_ORIENTADA_A_OBJETOS.pdfPROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
MariaTeresaGarznPrez9 visualizações
[ES] Programación orientada a objeto con java por Eudris Cabrera
[ES] Programación orientada a objeto con java[ES] Programación orientada a objeto con java
[ES] Programación orientada a objeto con java
Eudris Cabrera3.3K visualizações
Unidad o informatica por Marisa Torrecillas
Unidad o informaticaUnidad o informatica
Unidad o informatica
Marisa Torrecillas396 visualizações
Conceptos básicos de programación orientada a objetos (poo) por Maria Garcia
Conceptos básicos de programación orientada a objetos (poo)Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)
Maria Garcia3.1K visualizações

Mais de Rolando Steep Quezada Martinez

Implementación de Aplicaciones Basadas en Texto por
Implementación de Aplicaciones Basadas en TextoImplementación de Aplicaciones Basadas en Texto
Implementación de Aplicaciones Basadas en TextoRolando Steep Quezada Martinez
1K visualizações24 slides
Colecciones por
ColeccionesColecciones
ColeccionesRolando Steep Quezada Martinez
2.4K visualizações33 slides
Manejo De Excepciones por
Manejo De ExcepcionesManejo De Excepciones
Manejo De ExcepcionesRolando Steep Quezada Martinez
4.5K visualizações26 slides
Diseño de Clases por
Diseño de ClasesDiseño de Clases
Diseño de ClasesRolando Steep Quezada Martinez
8.4K visualizações19 slides
Herencia Y Polimorfismo por
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y PolimorfismoRolando Steep Quezada Martinez
10.1K visualizações22 slides
Networking por
NetworkingNetworking
NetworkingRolando Steep Quezada Martinez
550 visualizações26 slides

Mais de Rolando Steep Quezada Martinez(10)

Último

Trabajo de tecnología.docx por
Trabajo de tecnología.docxTrabajo de tecnología.docx
Trabajo de tecnología.docxDannaSofaMuoz
8 visualizações8 slides
Tecnologías para la enseñanza virtual.pptx por
Tecnologías para la enseñanza virtual.pptxTecnologías para la enseñanza virtual.pptx
Tecnologías para la enseñanza virtual.pptxexprosaavedra
9 visualizações7 slides
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ... por
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Francisco Javier Toscano Lopez
36 visualizações29 slides
PRESENTACION DE FC.pptx por
PRESENTACION DE FC.pptxPRESENTACION DE FC.pptx
PRESENTACION DE FC.pptxGabrielRivas75
5 visualizações5 slides
Taller de Electricidad y Electrónica.docx por
Taller de Electricidad y Electrónica.docxTaller de Electricidad y Electrónica.docx
Taller de Electricidad y Electrónica.docxjuantrujillosolano10
11 visualizações15 slides
Tema 3. Fuentes de Energía no renovables.ppt por
Tema 3. Fuentes de Energía no renovables.pptTema 3. Fuentes de Energía no renovables.ppt
Tema 3. Fuentes de Energía no renovables.pptAlmuPe
188 visualizações43 slides

Último(20)

Trabajo de tecnología.docx por DannaSofaMuoz
Trabajo de tecnología.docxTrabajo de tecnología.docx
Trabajo de tecnología.docx
DannaSofaMuoz8 visualizações
Tecnologías para la enseñanza virtual.pptx por exprosaavedra
Tecnologías para la enseñanza virtual.pptxTecnologías para la enseñanza virtual.pptx
Tecnologías para la enseñanza virtual.pptx
exprosaavedra9 visualizações
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ... por Francisco Javier Toscano Lopez
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Francisco Javier Toscano Lopez36 visualizações
PRESENTACION DE FC.pptx por GabrielRivas75
PRESENTACION DE FC.pptxPRESENTACION DE FC.pptx
PRESENTACION DE FC.pptx
GabrielRivas755 visualizações
Taller de Electricidad y Electrónica.docx por juantrujillosolano10
Taller de Electricidad y Electrónica.docxTaller de Electricidad y Electrónica.docx
Taller de Electricidad y Electrónica.docx
juantrujillosolano1011 visualizações
Tema 3. Fuentes de Energía no renovables.ppt por AlmuPe
Tema 3. Fuentes de Energía no renovables.pptTema 3. Fuentes de Energía no renovables.ppt
Tema 3. Fuentes de Energía no renovables.ppt
AlmuPe188 visualizações
excelavanzado1-231020003159-be608ddc.pdf por orianaisabellaramire
excelavanzado1-231020003159-be608ddc.pdfexcelavanzado1-231020003159-be608ddc.pdf
excelavanzado1-231020003159-be608ddc.pdf
orianaisabellaramire16 visualizações
proyecto_ salvando tortugas.pdf por CamilaCordoba30
proyecto_ salvando tortugas.pdfproyecto_ salvando tortugas.pdf
proyecto_ salvando tortugas.pdf
CamilaCordoba308 visualizações
Taller de Electricidad y Electrónica.docx por Franksamuel11
Taller de Electricidad y Electrónica.docxTaller de Electricidad y Electrónica.docx
Taller de Electricidad y Electrónica.docx
Franksamuel118 visualizações
periodo 2.pdf por qkpjyqbctx
periodo 2.pdfperiodo 2.pdf
periodo 2.pdf
qkpjyqbctx8 visualizações
proyecto lavadora.pdf por CamilaCordoba30
proyecto  lavadora.pdfproyecto  lavadora.pdf
proyecto lavadora.pdf
CamilaCordoba3011 visualizações
Fundamentos De Electricidad y Electrónica equipo 5.pdf por coloradxmaria
Fundamentos De Electricidad y Electrónica equipo 5.pdfFundamentos De Electricidad y Electrónica equipo 5.pdf
Fundamentos De Electricidad y Electrónica equipo 5.pdf
coloradxmaria13 visualizações
Dominios de internet.pdf por NahomiBanchen
Dominios de internet.pdfDominios de internet.pdf
Dominios de internet.pdf
NahomiBanchen8 visualizações
Google alternativo, para volar por corpbracat
Google alternativo, para volarGoogle alternativo, para volar
Google alternativo, para volar
corpbracat9 visualizações
RECURSOS EDUCATIVOS.docx por glorypagalo84
RECURSOS EDUCATIVOS.docxRECURSOS EDUCATIVOS.docx
RECURSOS EDUCATIVOS.docx
glorypagalo8412 visualizações
TALLER FUNDAMENTOS Y ELECTRICIDAD GRADO 9-2.pdf por samuellopezrivera928
TALLER FUNDAMENTOS Y ELECTRICIDAD GRADO 9-2.pdfTALLER FUNDAMENTOS Y ELECTRICIDAD GRADO 9-2.pdf
TALLER FUNDAMENTOS Y ELECTRICIDAD GRADO 9-2.pdf
samuellopezrivera9285 visualizações
excelavanzado1-231020003159-be608ddc.pdf por sarahloradorado
excelavanzado1-231020003159-be608ddc.pdfexcelavanzado1-231020003159-be608ddc.pdf
excelavanzado1-231020003159-be608ddc.pdf
sarahloradorado12 visualizações
Dominios de Internet.pdf por AnahisZambrano
Dominios de Internet.pdfDominios de Internet.pdf
Dominios de Internet.pdf
AnahisZambrano8 visualizações
electricidadyelectrnica1-230404014355-1be10cf7.docx por NyobeMahechaDvila
electricidadyelectrnica1-230404014355-1be10cf7.docxelectricidadyelectrnica1-230404014355-1be10cf7.docx
electricidadyelectrnica1-230404014355-1be10cf7.docx
NyobeMahechaDvila19 visualizações
Fundamentos De Electricidad y Electrónica equipo 5.pdf por CamilaCordoba30
Fundamentos De Electricidad y Electrónica equipo 5.pdfFundamentos De Electricidad y Electrónica equipo 5.pdf
Fundamentos De Electricidad y Electrónica equipo 5.pdf
CamilaCordoba3015 visualizações

Programación Orientada a Objetos

  • 1. Programación orientada a objetos Ing. Rolando Steep Quezada Martínez [email_address] Programación Básica en Java y Programación Orientada a Objetos
  • 2.
  • 3.
  • 4.  
  • 5.
  • 6.  
  • 7.
  • 8.
  • 9.
  • 10.  
  • 11.
  • 12.
  • 13.
  • 14. Clases y objetos PERRO raza, color... come, ladra... RAMBO bulldog gris come caviar ladra fuerte En el mundo real En OOP CLASE define datos y métodos OBJETO ocupa espacio y dura un tiempo
  • 15.
  • 16.  
  • 17.
  • 18.  
  • 19.
  • 20.  
  • 21.
  • 22.  
  • 23.
  • 24.
  • 25.
  • 26.

Notas do Editor

  1. Objetivos Conocer a nivel general conceptos de Tecnología de Objetos Entender claramente los conceptos de clase y objeto, identificando sus diferencias. Definir los conceptos de modelado: Abstracción, encapsulamiento y paquetes Definir una clase, miembro, atributo, método, constructor y paquete. Usar los modificadores de acceso private y public apropiadamente Distinguir entre una variable de instancia y local (clase). Describir como se inicializa una variable de instancia. Construir un objeto usando el operador new . Invocar un método de un objeto particular.
  2. Calidad de software y POO La Programación Orientada a Objetos es un conjunto de técnicas para obtener calidad interna como medio para obtener calidad externa (Reutilización y Extensibilidad)
  3. Factores de calidad del software Corrección .- Es la capacidad de los productos software de realizar con exactitud su tarea, tal y como es definida en la especificación. Definir los requisitos de manera precisa. Robustez .- Es la capacidad de los productos software de reaccionar adecuadamente ante situaciones excepcionales. Tienen que ver con el comportamiento (casos previstos o no). Extensibilidad .- Es la facilidad de adaptación de los productos software a los cambios en la especificación. Los cambios son frecuentes puesto que en la base de todo software hay algún fenómeno humano. Dificultad de adaptación proporcional al tamaño del sistema. Principios esenciales para facilitar la extensibilidad: Simplicidad de la arquitectura del software Descentralización : módulos autónomos
  4. Reutilización .- Es la capacidad de un producto software de ser utilizado en la construcción de diferentes aplicaciones No reinventar soluciones para problemas ya resueltos. Se escribe menos software, luego se puede dedicar mas tiempo a mejorar otros factores (fiabilidad) Compatibilidad .- Es la facilidad de combinar unos elementos software con otros Los sistemas necesitan interactuar con otros Convenciones estándar de comunicación inter-módulos Eficiencia .- Es la capacidad de un sistema software de requerir la menor cantidad posible de recursos hardware. Factor importante para la utilización Algunos están obsesionados con micro-optimizaciones Debemos conjugar eficiencia con los otros objetivos Los mecanismos OO deben ser implementados de un modo eficiente tanto en tiempo como en espacio Portabilidad .- Es la facilidad de transferir productos software a diferentes plataformas (entornos hardware y software). Facilidad de Uso .- Es la facilidad con la que personas con diferentes niveles de experiencia pueden aprender a usar los productos software y aplicarlos a resolver problemas. También incluye la facilidad de instalación, operación y supervisión. Funcionalidad .- Conjunto de posibilidades ofrecido por un sistema Evitar añadir propiedades de forma incontrolada Buen producto software debe estar basado en un pequeño número de grandes ideas Mantener constante el nivel de calidad Oportunidad.- Es la capacidad de un sistema software de ser lanzado cuando los usuarios lo desean, o antes. Economía .- Completarse con el presupuesto asignado Integridad .- Proteger contra modificaciones y accesos no autorizados Facilidad para reparaciones .- Corregir defectos sin rehacer el software Facilidades de Verificación .- Datos de prueba y procedimientos para detectar fallos
  5. Tecnología de objetos Se pueden considerar varias capas: La capa inferior son objetos (software chips) La capa intermedia son colecciones de objetos relacionados ( patrones de diseño OO ) La capa superior son aplicaciones que resuelven problemas específicos (armazones o frameworks ) Promueve el diseño basado en interfaces y arquitecturas estándares, con una organización y un proceso Durante el desarrollo del sistema lo importante es “qué es” y “qué hace” un objeto antes de decidir “cómo” se implementará Se centra en el comportamiento : operaciones que los clientes realizarán en el objeto, y operaciones que realizará sobre otros objetos Un cliente es un objeto que usa los recursos/servicios de otros objetos (servidores)
  6. Motivos que han conducido al éxito la tecnología de objetos Avances en arquitectura de computadores Avances en lenguajes de programación (C++, Smalltalk, Ada, Java, C# ...) Ingeniería del software (modularidad, encapsulado de la información, proceso de desarrollo incremental) Los límites de la capacidad de gestionar la complejidad de los sistemas simplemente con técnicas de descomposición algorítmica Ventajas de la tecnología de objetos Mejoras significativas de la productividad y calidad del código Estabilidad de los modelos respecto a entidades del mundo real Construcción iterativa Promueve la reutilización de software y de diseños (componentes, frameworks). Los sistemas OO son generalmente más pequeños que su equivalente no OO: menos código y más reutilización. Permite desarrollar sistemas más preparados para el cambio Vale para aplicaciones de pequeño y gran tamaño
  7. ¿Qué es la programación orientada a objetos? Un programa consta de un conjunto de objetos. Los objetos son abstracciones de cosas del mundo real. Nos interesa qué se puede hacer con los objetos más que cómo se hace. Cada objeto es responsable de unas tareas. Los objetos interactúan entre sí por medio de mensajes. Cada objeto es un ejemplar de una clase. Las clases se pueden organizar en una jerarquía de herencia.
  8. Resolución de problemas “con orientación a objetos” Consecuencias Un programa orientado a objetos se estructura como un conjunto de agentes que interactúan (programa como colección de objetos). Cada objeto proporciona un servicio que es utilizado por otros objetos (reutilización). La acción se inicia por la transmisión de un mensaje al objeto responsable de realizarla. Si el receptor acepta el mensaje, acepta la responsabilidad de llevar a cabo la acción solicitada. El receptor puede utilizar cualquier técnica que logre el objetivo deseado.
  9. Características de la programación orientada a objetos Abstracción Se define abstracción como la extracción y análisis de la abundancia de información en datos relacionados. Es importante que datos relacionados se mantengan juntos para su fácil manipulación. Es igualmente importante abstraer la información genérica de la información especifica con que se cuenta. Análisis sobre qué conoce y sobre qué hace un elemento determinado. Análisis de las características, atributos y métodos que son (y que no son) de interés para la aplicación en consideración. La abstracción de un elemento depende del contexto en el que se define. Encapsulamiento Se define encapsulamiento como el ocultamiento de datos relacionados detrás de una interface de métodos. Estos métodos permiten acceder a la información y manipularla convenientemente. Modularización de las características de un elemento. Un sistema se modulariza en clases, las que se modularizan en métodos y atributos. El comportamiento es encapsulado en métodos. La información es encapsulada en atributos. A través del encapsulamiento se define el qué se hace ocultando el c ómo se hace.
  10. Ocultamiento de la información Restricción de acceso al estado interno de un elemento. Si una clase requiere información sobre otra clase entonces debe solicitarla (no debe utilizarla directamente). El ocultamiento de la información previene escribir código altamente acoplado. Estándares Object Management Group (OMG) UML CORBA American National Standards Institute (ANSI) C++ SUN Microsystems JAVA EJB Componentes Un componente es una unidad modular y extensible de implementación independiente que tiene un contrato especifico de interfaz y dependencias explícitamente definidas. MODULARIDAD: posee todo lo necesario para su funcionalidad EXTENSIBILIDAD: debiera poder extenderse su funcionalidad original ABIERTO: soporte a diferentes plataformas e intreracción con otros componentes Procesos de Desarrollo Es un conjunto de fases, métodos, técnicas y prácticas que se usan para desarrollar y mantener software con sus documentos asociados. RAD, basado en componentes, Iterativo, incremental, espiral, UP. Fábricas de Software Software de soporte para desarrollar software Frameworks Conjunto reutilizable de bloques de construcción de software que se pueden usar, extender o adecuar. Patrones Es una solución reusable de un problema común que soporta la transferencia de técnicas probadas y decisiones a otros programadores.
  11. Objetos Unidad atómica que encapsula estado y comportamiento Un objeto puede caracterizar una entidad física (un teléfono, un interruptor, un cliente) o una entidad abstracta (un número, una fecha, una ecuación matemática). Todos los objetos son instancias de una clase: Los objetos se crean por instanciación de las clases. Todos los objetos de una misma clase (p.ej. automóviles) comparten ciertas características: sus atributos (tamaño, peso, color, potencia del motor, …) y el comportamiento que exhiben (aceleran, frenan, curvan, …). Características Identidad (puede distinguirse de otros objetos) Estado (datos asociados a él) Comportamiento (puede hacer cosas)
  12. Clases Implementación de un tipo de dato. Una clase sirve tanto de módulo como de tipo Tipo : ( concepto semántico ) Mecanismo de definición de nuevos tipos de datos: describe una estructura de datos (objetos) para representar valores de un dominio y las operaciones aplicables. Módulo : ( concepto sintáctico ) Mecanismo para organizar el software Encapsula componentes software
  13. Clases Cada clase tiene comportamientos o responsabilidades o mensajes que pueden ser enviados a la clase Puntos Tienen distancia desde origen puede ser trasladados, ... Líneas Tienen largo, pendiente puede intersectar otra, ... Rectángulos Tienen largo, ancho, diagonal, perímetro, área, ….
  14. Clases y objetos Clase Representa una plantilla (template) de varios objetos y describe como esos objetos están estructurados internamente. Objeto Entidad capaz de mantener un estado ( información representada por atributos) y que ofrece un conjunto de operaciones ( comportamiento representados por métodos) tanto para examinar como para modificar ese estado. Instancia Una instancia es un objeto creado a partir de una clase. La clase describe la estructura de la instancia (información y comportamiento), mientras que el estado actual de la instancia es definido por las operaciones ejecutadas. El estado interno de cada instancia es propia de cada una y se compone de los atributos establecidos en la clase. Podemos instanciar (crear) múltiples objetos de una misma clase crear puntos en diferente lugar del espacio. crear conjunto de líneas - todas con diferente pendiente y largo. Luego de crear un objeto, podemos aplicar operaciones de su clase a éste Encontrar la distancia de un punto al origen. Mover a punto a una posición nueva. Determinar el largo de la línea. Preguntar si dos líneas se interceptan. Formalmente, decimos que invocamos métodos de la clase o enviamos mensajes a un objeto de la clase.
  15. Clases, UML y Java UML( U nified M odeling L anguage) Lenguaje Unificado de Modelado, cuyos objetivos son: Proporcionar a los usuarios un lenguaje de modelado visual expresivo y utilizable para el desarrollo e intercambio de modelos significativos. Proporcionar mecanismos de extensión y especialización. Proporcionar una base formal para entender el lenguaje de modelado. Fomentar el crecimiento del mercado de las herramientas OO. Soportar conceptos de desarrollo de alto nivel como pueden ser colaboraciones, armazones, patrones y componentes Estado y comportamiento están relacionados . Ejemplo Un avión no puede aterrizar (acción) si no está en vuelo (estado) Representación gráfica de una clase (notación UML) Una clase se representa con un rectángulo dividido en tres partes: - El nombre de la clase (identifica la clase de forma unívoca) - Sus atributos (datos asociados a los objetos de la clase) - Sus operaciones (comportamiento de los objetos de esa clase) NOTA: Las clases se deben identificar con un nombre que, por lo general, pertenecerá al vocabulario utilizado habitualmente al hablar del problema que tratamos de resolver.
  16. Clases en Java ( sintaxis básica ) package nombrePaquete ; //define el nombre del paquete contenedor de la clase [lista de importaciones] [ public ] class NombreClase //Define la clase { //Inicio del cuerpo de la Clase //Define una constante public static final constante = valorInicial ; //Define un atributo de instancia alcance tipoDato atributoInstancia [ = valorInicial ] ; //Define un atributo de clase alcance static tipoDato atributoClase [ = valorInicial ] ; //Define un constructor public NombreClase ( [ listaArgumentos ] ) { listaSentencias ; } //Define un método de instancia alcance void| tipoRetorno metodoInstancia ( [ listaArgumentos ] ) { listaDeclaraciones ; listaSentencias ; [ return expresión ; ] //si tipo de retorno diferente de void } //Define un método de clase alcance static void| tipoRetorno metodoClase ( [ listaArgumentos ] ) { listaDeclaraciones ; listaSentencias ; [ return expresión ; ] //si tipo de retorno diferente de void } } //Fin de la clase NOTA: Una clase debe estar definida dentro de un archivo de texto con extensión *.java de la siguiente forma NombreClase.java y como primera sentencia debe especificar el paquete al cual pertence.
  17. Atributos Representan los estado o características de un objeto o conjunto de objetos Atributos de clase Los atributos de clase son aquellos que representan valores comunes a todos las instancias de una clase pueden tener un valor inicial; por ejemplo, edad promedio, total de alumnos, etc. … static double edadPromedio ; static int totalAlumnos = 0 ; Atributos de instancia Los atributos de instancia son aquellos que representan valores propios de un solo objeto que lo diferencia de otros objetos de su misma clase, pueden tener un valor por defecto; por ejemplo, nombre, fecha de nacimiento, numero ejes (auto), tamaño, etc. … String nombre ; Date fechaNacimiento ; int numeroEjes = 2 ; Constantes Las constantes de Java son definidas por el modificador final y representan valores inmutables en tiempo y espacio; por convención el nombre de las constantes debe estar totalmente en mayúsculas; por ejemplo: PI = 3.141516, etc. … static final double PI = 3.141516 ;
  18. Inicialización de Atributos Si un atributo no se inicializa se le asigna un valor por defecto en función de su tipo: Inicialización por defecto de los objetos en Java Cuando se crea un objeto con el operador new, por defecto: Las variables de instancia de tipo numérico (byte, short, int, long, float y double) se inicializan a 0. Las variables de instancia de tipo char se inicializan a ‘’. - Las variables de instancia de tipo boolean se inicializan a false. Las variables de instancia de cualquier tipo no primitivo se inicializan a null (una palabra reservada del lenguaje que indica que la referencia no apunta a ninguna parte). NOTA: Para acceder a un miembro de un objeto (leer el valor de una variable de instancia o invocar un método) hemos de tener una referencia a un objeto distinta de null. +0.0f float false boolean ‘ u000’ char null Referencia a objeto +0.0d double 0 byte,short,int,long Valor Inicial Tipo
  19. Métodos Representan el comportamiento de un Objeto o conjunto de objetos Métodos de Clase Acciones que no requieren de un Objeto específico para su realización; por ejemplo, sumar dos números, buscar por código, etc. … Los métodos de clase sólo tiene acceso a los atributos de clase. static double sumar ( double a , double b ) { double suma = 0.0 ; suma = a + b ; return suma ; } Métodos de Instancia Acciones que requieren de un Objeto específicos; por ejemplo, obtener la edad, obtener el nombre completo, cambiar el nombre, encender (auto), etc. … Los métodos de instancia tiene acceso a todos los miembros de una clase, sean de instancia o de clase. boolean encender ( ) { … } Invocar un Método (Enviar un mensaje) Calculadora. sumar( 12.2 , 13.6 ) ; objAuto . encender( ) ;
  20. Sobrecarga de métodos Java soporta sobrecarga de métodos el mismo nombre pero con DIFERENTE lista de argumentos SIEMPRE devuelven el mismo tipo public class ListaEnteros{ … public void add ( int elem){…} public void add ( int elem, int index){…} } Paso de parámetros siempre por valor los valores de los parámetros son copias de los valores que especifica el que lo invoca tipos primitivos no cambian los objetos pueden cambiar su estado  se pasa por valor la referencia Referencias Cualquier tipo que definamos en Java con una clase es un tipo no primitivo. Cuando declaramos una variable de un tipo primitivo en Java, estamos reservando espacio en memoria para almacenar un valor del tipo correspondiente. Sin embargo, cuando declaramos una variable de un tipo no primitivo en Java, lo único que hacemos es reservar una zona en memoria donde se almacenará una referencia a un objeto del tipo especificado (y no el objeto en sí, de ahí la necesidad de utilizar el operador new).
  21. Constructores Cuando utilizamos el operador new acompañado del nombre de una clase, se crea un objeto del tipo especificado (una instancia de la clase cuyo nombre aparece al lado de new). Al crear un objeto de una clase concreta, se invoca a un método especial de esa clase, denominado constructor , que es el que se encarga de inicializar el estado del objeto. Constructor por defecto Por defecto, Java crea automáticamente un constructor sin parámetros para cualquier clase que definamos. public class Cuenta { // Constante public static final double LIMITE_NORMAL = 300.00; // Variables de instancia private double saldo = 0.0d; private double limite = LIMITE_NORMAL; // Métodos ... } Al crear un objeto de tipo Cuenta con new Cuenta(), se llama al constructor por defecto de la clase Cuenta, con lo cual se crea un objeto de tipo Cuenta cuyo estado inicial será el indicado en la inicialización de las variables de instancia saldo y limite. Para facilitarnos la creación de objetos, Java nos permite definir varios constructores para una misma clase (siempre y cuando tengan parámetros diferentes).
  22. Constructores definidos por el usuario Los lenguajes de programación nos permiten definir constructores para especificar cómo ha de inicializarse un objeto al crearlo. El nombre del constructor ha de coincidir con el nombre de la clase. Podemos definir un constructor para inicializar las variables de instancia de una clase, en vez de hacerlo en la propia declaración de las variables de instancia: public class Cuenta { // Constante public static final double LIMITE_NORMAL = 300.00; // Variables de instancia private double saldo; private double limite; // Constructor sin argumentos public Cuenta ( ) { this.saldo = 0.0 ; this.limite = LIMITE_NORMAL ; } // Constructor con argumentos public Cuenta ( double saldoInicial ) { this.saldo = saldoInicial ; this.limite = LIMITE_NORMAL ; } // Métodos ... } Nota: La palabra reservada this ( instancia actual ) hace referencia al objeto que realiza la operación cuya implementación específica el método.
  23. Creación de objetos Antes de poder usar un objeto hemos de crearlo. El operador new El operador new nos permite crear objetos en Java. Tipo identificador = new Tipo ( [argumentos] ); Si escribimos un programa como el siguiente: public class Ingreso { public static void main (String args[]) { Cuenta miCuenta; miCuenta.ingresar(100.00); // Error } } El compilador nos da el siguiente error: Ingreso.java:7: variable cuenta might not have been initialized cuenta.ingresar(100.00); ^ Hemos declarado una variable que, inicialmente, no tiene ningún valor. Antes de utilizarla, deberíamos haberla inicializado (con un objeto del tipo adecuado): Cuenta cuenta = new Cuenta ( );
  24. Representación en UML Atributo Público Atributo Protegido Atributo Privado ¿Cómo se comprueba el estado de un objeto? Accediendo a las variables de instancia del objeto objeto.atributo Por ejemplo, cuenta.saldo nos permitiría acceder al valor numérico correspondiente al saldo de una cuenta siempre y cuando éste sea público y fuese una instancia de la clase Cuenta. Estándar Javabean: Una clase debe definir todos sus Atributos privados y acceso a través de métodos públicos ( set/get ); si una cuenta tiene el atributo saldo, este debe ser privado y definir los siguientes métodos: public class Cuenta{ private double saldo ; public double getSaldo() { return saldo; } public void setSaldo(double nuevoSaldo ) { saldo = nuevoSaldo ;} }
  25. Paquetes Agrupan un conjunto de clases relacionadas o altamente cohesionadas. Paquetes básicos del JDK de Java java.lang : para funciones del lenguaje //Disponible sin import java.util : para utilidades adicionales java.io : para manejo de ficheros java.awt : para diseño gráfico e interfaz de usuario java.awt.event : para gestionar eventos javax.swing : nuevo diseño de GUI java.net : para comunicaciones java.sql : para acceso a datos con JDBC