1. Autor: Luis Heladio Garzón Rodríguez
OBJETIVO GENERAL
Propender porque el estudiante se apropie el aprendizaje de las características y
fundamentos de programación orientada a objetos, aplicándolo en la construcción de
soluciones a problemas de programación.
OBJETIVOS ESPECIFICOS
• Conocer y comprender las características fundamentales de la programación
orientada a objetos.
• Conocer y comprender los conceptos fundamentales de la POO, Herencia y sus
ventajas.
• Continuar el afianzamiento con las estructuras de control.
• Entender el propósito de los procesos de la programación orientada a objetos.
• Comprender los conceptos fundamentales de la programación y su importancia.
• Profundizar mediante la investigación por el estudiante, de los conceptos aquí
tratados.
PROGRAMACIÓN ORIENTADA A OBJETOS
Programación orientada a objetos es una forma de elaborar soluciones de
programación muy aproximadas a la realidad.
En el paradigma de 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 que otros
tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para
escribir nuestros programas en términos de objetos, propiedades, métodos y otras
cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que
permita soltarnos un poco con este tipo de programación.
Durante años, los programadores se han dedicado a construir aplicaciones muy
parecidas que resolvían una y otra vez los mismos problemas. Para conseguir que los
esfuerzos de los programadores puedan ser utilizados por otras personas se creó la
POO. Que es una serie de normas de realizar las cosas de manera que otras personas
puedan utilizarlas y adelantar su trabajo, de tal forma que consigamos que el código se
pueda reutilizar.
La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de
quien la programa, de manera que la forma de hacer las cosas puede ser diferente
según el programador. Aunque podamos hacer los programas de formas distintas, no
todas ellas son correctas, lo difícil no es programar orientado a objetos sino programar
bien. Programar bien es importante porque así nos podemos aprovechar de todas las
ventajas de la POO.
UNIDAD III
PROGRAMACIÓN ORIENTADA A OBJETOS
2. Autor: Luis Heladio Garzón Rodríguez
Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por
ejemplo vamos a pensar en un coche para tratar de modelarlo en un esquema de POO.
Diríamos que el coche es el elemento principal que tiene una serie de características,
como podrían ser el color, el modelo o la marca. Además tiene una serie de
funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sería el objeto, las propiedades serían las
características como el color o el modelo y los métodos serían las funcionalidades
asociadas como ponerse en marcha o parar.
Por poner otro ejemplo vamos a ver cómo modelaríamos en un esquema de POO una
fracción, es decir, esa estructura matemática que tiene un numerador y un
denominador que divide al numerador, por ejemplo 3/2.
La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador.
Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o
número, restarse con otra fracción, etc.
Estos objetos se podrán utilizar en los programas, por ejemplo en un programa de
matemáticas harás uso de objetos fracción y en un programa que gestione un taller de
coches utilizarás objetos coche. Los programas Orientados a objetos utilizan muchos
objetos para realizar las acciones que se desean realizar y ellos mismos también son
objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche,
herramienta, mecánico, recambios, etc.
De acuerdo a esto podemos concluir que en la programación orientada a objetos, la
reusabilidad, el empaquetamiento, la ocultación, la encapsulación, la modularidad, la
herencia son características fundamentales para hacer que los esfuerzos de
programación puedan redundar en menores esfuerzos humanos, mayores beneficios o
resultados y baja de costos.
La programación orientada a objetos es una técnica cuyo bloque de construcción
principal son los objetos y las interrelaciones.
Un objeto son estructuras de datos más las funciones que operan sobre estas
estructuras.
Revise el tema Programación Orientada a Objetos, propuesto en la unidad II, para
repasar las características de la POO, y los conceptos fundamentales de la POO.
En esta unidad centraremos nuestra atención y esfuerzo en la definición de los
siguientes conceptos:
1. Herencia en POO
2. Constructores
3. Clases abstractas
4. Redefinición de métodos
5. Restringir la herencia
6. Visibilidad protegida
3. Autor: Luis Heladio Garzón Rodríguez
1. HERENCIA
Es la facilidad mediante la cual la clase B hereda en ella cada uno de los atributos y
operaciones de A, como si esos atributos y operaciones hubiesen sido definidos por la
misma B. Por lo tanto, puede usar los mismos métodos y variables públicas declaradas
en A. Los componentes registrados como "privados" (private) también se heredan,
pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo
pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener
hegemónico el ideal de POO.
Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía
de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las
clases a las que pertenecen.
La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los
objetos ser definidos y creados como tipos especializados de objetos preexistentes.
Estos pueden compartir (y extender) su comportamiento sin tener que volver a
implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y
estas en árboles o enrejados que reflejan un comportamiento común. Cuando un
objeto hereda de más de una clase se dice que hay herencia múltiple.
Se puede construir una clase a partir de otra mediante el mecanismo de la herencia. La
clase nueva es la clase derivada y la clase fuente u original es la clase base. Para
indicar que una clase es derivada de otra se utiliza la palabra reservada extends :
class <nombre_clase_derivada> extends <nombre_clase_original> {…..}
ejemplo:
class automóvil extends vehiculo
Lo anterior significa que previamente a sido creada una clase “vehiculo” y que a partir
de esta se crea una clase nueva “automóvil” que hereda todas las características
(variables y métodos) definidas en la clase base “vehiculo”.
De esta misma forma en algunos casos se habla de super-clase y sub-clase. Donde
la super-clase es la clase base y la sub-clase es la clase derivada.
Cuando no se especifica explícitamente que una clase deriva (extends) de la clase
base, por defecto heredara de la clase java.lang.object, que es la clase raíz de toda
la jerarquía en java. Esto significa que todas las clases heredan algunos métodos de
Object.
Nota: Para profundizar más sobre el tema revise los libros:
• Holzner, Steven. La biblia de Java 2. Capi 4, Pg. 182.
file:///C:/Users/Luis%20H/Downloads/La%20Biblia%20del%20Java%202%20-%20Holzner,%20Steven%20-%20Anaya%20Multimedia.pdf
• Deitel. Programar en Java. 7ª. Edición. Cap 3, Pag. 72; Cap 9 pag 360.
http://www.academica.mx/sites/default/files/adjuntos/13274/Como%20programar%20en%20Java%20-%207ma%20Edicion%20-%20P.%20J.
%20Deitel.pdf
4. Autor: Luis Heladio Garzón Rodríguez
• Garcia de Jalon, Javier y otros. Aprenda Java como si estuviera en primero. Cap 3 Pag 48.
http://www4.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/Java/Java2.pdf
1.1 La clase Object
Todas las clases en JAVA derivan de Object.
La clase Object tiene métodos importantes que son heredados y es necesario
conocerlos, para sacar el mejor provecho de estos.
Por ejemplo el método clone(), equals(), tostring() o finalize(), para saber más sobre
ellos y otros, consulte en los libros indicados en la nota anterior.
2. CONSTRUCTORES
Un constructor en POO es una instrucción mediante la cual se inicializa una instancia
de una clase.
Esto significa que en toda clase debe escribirse un constructor. El constructor es un
bloque de instrucciones donde se inicializa las variables de la clase. El constructor tiene
el mismo nombre de la clase. No tiene tipo, esto significa que no retorna valor.
2.2 Declarar un Objeto y crear un objeto
Se declara un objeto, de forma parecida como se declara una variable.
String cadena1; //declaración del objeto cadena1 de la clase string
Con el solo hecho de declararlo, no se puede utilizar. Se tiene que crear. Esto se hace
mediante el operador new().
cadena1 = new string (“Creación de una cadena de caracteres”);
Lo anterior se debe interpretar como la creación del objeto cadena, cuando el
compilador ejecuta el operador new, crea un nuevo espacio o un nuevo objeto llamado
cadena1 de la clase string, con un valor inicial, que es la cadena “Creación de una
cadena de caracteres” asignada.
Veamos otro ejemplo:
vehi automóvil = new vehi; //creación de un nuevo objeto de la clase vehi
Lo anterior significa que automóvil se está declarando como un objeto de la clase vehi,
por ello hereda todas las variables y métodos de vehi. Con el operador new se indica
al compilador que cree un objeto del tipo o clase vehi.
Nota: Para profundizar más sobre el tema revise los libros:
• Holzner, Steven. La biblia de Java 2. Capi 4, Pg. 182.
5. Autor: Luis Heladio Garzón Rodríguez
• Holzner, Steven. La biblia de Java 2. Capi 4, Pg. 182.
file:///C:/Users/Luis%20H/Downloads/La%20Biblia%20del%20Java%202%20-%20Holzner,%20Steven%20-%20Anaya%20Multimedia.pdf
• Deitel. Programar en Java. 7ª. Edición. Cap 9 pag 360.
http://www.academica.mx/sites/default/files/adjuntos/13274/Como%20programar%20en%20Java%20-%207ma%20Edicion%20-%20P.%20J.
%20Deitel.pdf
• Garcia de Jalon, Javier y otros. Aprenda Java como si estuviera en primero. Cap 3 Pag 50.
http://www4.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/Java/Java2.pdf
3. CLASES ABSTRACTAS
Abstracción: Denota las características esenciales de un objeto, donde se
capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un
"agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y
"comunicarse" con otros objetos en el sistema sin revelar cómo se implementan
estas características. Los procesos, las funciones o los métodos pueden también ser
abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar
una abstracción.
Nota: Para profundizar más sobre el tema revise los libros:
• Garcia de Jalon, Javier y otros. Aprenda Java como si estuviera en primero. Cap 3 Pag 50.
http://www4.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/Java/Java2.pdf
Observen la estructura para un programa en JAVA
Clase <NombreClase>
{
//Propiedades que pueden ser public, prívate, protected
//constructor
<NombreClase>
{ //instrucciones }
//Declaracion de métodos
<NombreClase> <NombreMetodo1>
{ //instrucciones }
.
.
.
<NombreClase> <NombreMetodon>
{ //instrucciones }
//Metodo principal
Public static void main ()
{ //desde aquí se operacionaliza la clase a través de objetos
} //Fin del método principal
//Funciones que no son métodos de la clase o funciones independientes
Tipo TipoDato NombreFuncion (<Parámetros>)
{ //Instrucciones de la función
}//Fin de la funcion
6. Autor: Luis Heladio Garzón Rodríguez
} //Fin de la clase
La intensión en esta parte es que se familiaricen con la estructura de una clase y como
se operacionaliza su funcionalidad, variables locales, métodos, constructores, etc.
Para ello propongo revisar: http://www.inf-cr.uclm.es/www/cmunoz/mytp/ejercicios7.pdf donde
encontraran ejemplos y casos de estudio para analizar.
BIBLIOGRAFIA
Libros
• Garcia de Jalon, Javier y otros. Aprenda Java como si estuviera en primero.
http://www4.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/Java/Java2.pdf
• Holzner, Steven. La biblia de Java 2.
file:///C:/Users/Luis%20H/Downloads/La%20Biblia%20del%20Java%202%20-%20Holzner,%20Steven%20-%20Anaya
%20Multimedia.pdf
• Deitel. Programar en Java. 7ª. Edición.
http://www.academica.mx/sites/default/files/adjuntos/13274/Como%20programar%20en%20Java%20-%207ma%20Edicion%20-%20P.
%20J.%20Deitel.pdf
• Sánchez, Jorge. Java 2. http://www.jorgesanchez.net/programacion/manuales/Java.pdf
WebgrafÍa
Guía de iniciación al lenguaje Java. Tutorial de Java. Octubre 1999.
http://zarza.usal.es/~fgarcia/doc/tuto2/Index.htm
Lenguaje de programación JAVA. Enciclopedia Wikipedia.
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java
Java Inicial. Emilio Avilés Ávila.
http://www.slideshare.net/techmi/curso-java-inicial-1-poo
Aprendiendo JAVA y programación orientada a objetos. Gustavo Guillermo Pérez.
http://www.compunauta.com/forums/linux/programacion/java/AprendiendoJava.pdf
Introducción a la POO y el lenguaje JAVA.
http://wwwdi.ujaen.es/asignaturas/progav/progav-tema1.pdf
Programación Orientada a Objetos en JAVA.
http://wwwdi.ujaen.es/asignaturas/progav/progav-tema2.pdf
Aprender JAVA POO.
http://aprender-java.blogspot.com/
Manuales de JAVA.
http://todojava.awardspace.com/manuales-java.html
7. Autor: Luis Heladio Garzón Rodríguez
} //Fin de la clase
La intensión en esta parte es que se familiaricen con la estructura de una clase y como
se operacionaliza su funcionalidad, variables locales, métodos, constructores, etc.
Para ello propongo revisar: http://www.inf-cr.uclm.es/www/cmunoz/mytp/ejercicios7.pdf donde
encontraran ejemplos y casos de estudio para analizar.
BIBLIOGRAFIA
Libros
• Garcia de Jalon, Javier y otros. Aprenda Java como si estuviera en primero.
http://www4.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/Java/Java2.pdf
• Holzner, Steven. La biblia de Java 2.
file:///C:/Users/Luis%20H/Downloads/La%20Biblia%20del%20Java%202%20-%20Holzner,%20Steven%20-%20Anaya
%20Multimedia.pdf
• Deitel. Programar en Java. 7ª. Edición.
http://www.academica.mx/sites/default/files/adjuntos/13274/Como%20programar%20en%20Java%20-%207ma%20Edicion%20-%20P.
%20J.%20Deitel.pdf
• Sánchez, Jorge. Java 2. http://www.jorgesanchez.net/programacion/manuales/Java.pdf
WebgrafÍa
Guía de iniciación al lenguaje Java. Tutorial de Java. Octubre 1999.
http://zarza.usal.es/~fgarcia/doc/tuto2/Index.htm
Lenguaje de programación JAVA. Enciclopedia Wikipedia.
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java
Java Inicial. Emilio Avilés Ávila.
http://www.slideshare.net/techmi/curso-java-inicial-1-poo
Aprendiendo JAVA y programación orientada a objetos. Gustavo Guillermo Pérez.
http://www.compunauta.com/forums/linux/programacion/java/AprendiendoJava.pdf
Introducción a la POO y el lenguaje JAVA.
http://wwwdi.ujaen.es/asignaturas/progav/progav-tema1.pdf
Programación Orientada a Objetos en JAVA.
http://wwwdi.ujaen.es/asignaturas/progav/progav-tema2.pdf
Aprender JAVA POO.
http://aprender-java.blogspot.com/
Manuales de JAVA.
http://todojava.awardspace.com/manuales-java.html