SlideShare una empresa de Scribd logo
NOMBRE:
ADRIANA BERENICE RENOVATO CEJA
CARRERA:
INGENIERÍA EN. TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
MATRICULA:
481200555
GRADO Y GRUPO:
9° CUATRIMESTRE “A”
MATERIA:
PROGRAMACIÓN DE APLICACIONES
UNIDAD:
“CONCEPTOS AVANZADOS DE LA POO”
PROFESOR:
I.S.C OMAR EMMANUEL LARA JUÁREZ
LUGAR Y FECHA:
PINOS ZAC, 08 DE JULIO DEL 2015
U N I V E R S I D A D T E C N O L Ó G I C A D E L E S T A D O D E Z A C A T E C A S
U N I D A D A C A D É M I C A D E P I N O S
T E C N O L O G Í A S D E L A I N F O R M A C I Ó N Y C O M U N I C A C I Ó N
ABSTRACCIÓN EN PROGRAMACIÓN ORIENTADA A
OBJETOS
Abstracción es un término del mundo real que podemos aplicar tal cual lo
entendemos en el mundo de la Programación Orientada a Objetos. Algo abstracto
es algo que está en el universo de las ideas, los pensamientos, pero que no se
puede concretar en algo material, que se pueda tocar. Pues bien, una clase
abstracta es aquella sobre la que no podemos crear especímenes concretos, en la
jerga de POO es aquella sobre la que no podemos instanciar objetos.
ABSTRACCIÓN EN EL MUNDO REAL
La programación orientada a objetos sabemos que, de alguna manera, trata de
"modelizar" los elementos del mundo real. En el mundo en el que vivimos existe
un universo de objetos que colaboran entre sí para realizar tareas de los sistemas.
Llevado al entorno de la programación, también debemos programar una serie de
clases a partir de las cuales se puedan instanciar objetos que colaboran entre sí
para la resolución de problemas. Si asumimos esto, a la vista de las situaciones
que ocurren en el mundo real, podremos entender la abstracción. En Herencia en
Programación Orientada a Objetos se puede definir jerarquías de clasificación: los
animales y dependiendo de éstos tenemos mamíferos, vertebrados, invertebrados.
Dentro de los mamíferos tenemos vacas, perros…
Animal puede ser desde una hormiga a un delfín o un humano. En nuestro cerebro
el concepto de animal es algo genérico que abarca a todos los animales: "seres
vivos de un "reino" de la existencia". Si defines animal tienes que usar palabras
muy genéricas, que abarquen a todos los animales posibles que puedan existir en
el mundo.
Por tanto "animal", en términos del lenguaje común, podemos decir que es un
concepto genérico, pero no una concreción. En términos de POO decimos que es
un concepto abstracto, que implementaremos por medio de una clase abstracta.
No instanciaremos animales como tal en el mundo, sino que instanciaremos
especímenes de un tipo de animal concreto.
En los animales existen propiedades y métodos que pueden ser comunes a todos
los animales en general. Los animales podrán tener un nombre o una edad,
determinadas dimensiones o podrán desempeñar acciones como morir. Lo que
nos debe quedar claro es que no deberíamos poder instanciar un animal como tal.
¿Cómo nace un animal en concreto?, ¿cómo se alimenta? Para responder a
esas preguntas necesitamos tener especímenes más concretos. Sí que sé cómo
nace o cómo se alimenta una hormiga, o un gorrión, pero no lo puedo saber de un
animal genérico, porque puede hacerlo de muchas maneras distintas.
HERENCIA Y ABSTRACCIÓN
Recuerda Ejemplo: Tengo animales. Hemos acordado que no puedo tener un
animal concreto instanciado en un sistema. Si acaso tendré instancias de perros,
saltamontes o lagartijas. Pues bien, en los esquemas de herencia este caso nos
puede surgir muy habitualmente. En la clase "animal" puedo tener determinadas
propiedades y acciones implementadas.
Por ejemplo, todos los animales pueden tener un nombre, o una edad (ya sean
segundos, días o años de edad). También es posible que pueda definir diversas
acciones de una vez para todos los animales de una jerarquía de herencia, por
ejemplo, la acción de morir, pues todos morimos igual (simplemente dejamos de
existir aunque aquí dependiendo de las creencias de cada uno esto pueda ser
discutible).
Aunque mi sistema no pueda crear animales como tal, tener definidas esas
cuestiones comunes a todos los animales me resulta útil para no tener que
programarlas de nuevo en todos los tipos de animales que puedan existir.
Simplemente las heredaré en las clases hijas.
Sin embargo hay cosas de los animales que no podré implementar todavía. Por
ejemplo nacer, alimentarse, etc. No sé cómo va a nacer un animal, pero sé que
todos los animales del mundo nacen de algún modo (unos nacen de huevos, otros
estaban en la barriga de las hembras y nacen a consecuencia de un parto, etc.)
En estos casos nos puede ser útil definir como métodos abstractos en la clase
"animal" esos métodos que van a estar presentes en todos los animales, aunque
no seamos capaces de implementarlos todavía.
public abstract function nacer ();
Esto quiere decir que todos los animales del mundo heredarán un método
abstracto llamado nacer. En las clases concretas que hereden de animal y donde
ya sepamos cómo nace tal animal, por ejemplo, la gallina, podemos implementar
ese método, para que deje de ser abstracto.
public function nacer () {}
Hasta ahora sabemos que hay clases que tienen métodos abstractos, que no
somos capaces de implementar todavía y clases en las que se heredan métodos
abstractos y en las que seremos capaces de implementarlos. La utilidad de esto la
entenderemos mejor en unos instantes, al tratar el polimorfismo, pero de momento
debemos ser capaces de asimilar estas definiciones más formales:
"Una clase abstracta es aquella en la que hay definidos métodos abstractos,
sobre la que no podremos instanciar objetos" Además, en un esquema de
herencia, "Si heredamos de una clase abstracta métodos abstractos,
tampoco se podrán instanciar objetos de las clases hijas y tendrán que
definirse como abstractas, a no ser que implementemos todos y cada uno de
los métodos que se habían declarado como abstractos en la clase padre".
POLIMORFISMO Y ABSTRACCIÓN
Cuando hablamos de polimorfismo explicamos que es una relajación del sistema
de tipos por la cual éramos capaces de aceptar objetos de un tipo y de todas las
clases hijas. Por ejemplo, tengo la clase "PoligonoRegular". Sé que los polígonos
regulares voy a querer conocer su área, pero para saber su área necesito conocer
el número de lados que tiene tendrá un método abstracto "dameArea()"..
Tenemos "Alumnos de una Universidad", los alumnos los vas a querer matricular
en las universidades, pero dependiendo del tipo de alumno la matrícula se hace
diferente. Entonces, en la clase "alumno" tendré un método abstracto que sea
"matriculate ()" que podré definir del todo cuando implemente las clases hijas.
Gracias a que fueron definidos los métodos abstractos "dameArea ()" y
"matriculate ()" en las clases padres.
Ahí está la potencia del polimorfismo, recibir un objeto que pertenece a una
jerarquía de clasificación y saber que puedo pedirle determinadas cosas. Quizás
en la clase padre no pudieron implementarse esos comportamientos, porque no
sabíamos el código necesario para ello, pero al menos se declararon que iban a
poder realizarse en el futuro en clases hijas. Eso me permite, en un esquema de
polimorfismo, que pueda estar seguro que todos los objetos que reciba puedan
responder a acciones determinadas, pues en las clases hijas habrán sido definidas
necesariamente (si no se definen deberían declararse las clases como abstractas
y en ese caso es imposible que me manden objetos de esa clase).
CONCLUSIÓN
Las clases abstractas son superclases incompletas „no se pueden instanciar, las
clases abstractas soportan polimorfismo. Una clase Abstracta No puede ser
instanciada (no se pueden crear objetos directamente - new), solo puede ser
heredada. La importancia de implementar clases y métodos abstractos en
Programación Orientada a Objetos (POO), mantenemos nuestra aplicación más
organizada y fácil de entender sino que también al no poder instanciar una clase
abstracta nos aseguramos de que las propiedades específicas de esta, solo estén
disponibles para las clases hijas o derivadas, también estas clases permiten crear
interfaces que luego deben ser implementadas por las clases que hereden de la
clase abstracta.
Una clase abstracta puede tener datos (atributos) e implementar métodos y
propiedades como una clase normal.
DEFINICIÓN
Clase Abstractas: Es una clase de la cual no se puede instanciar, se usa
únicamente para definir subclases, puede contener métodos no-abstractos pero al
menos uno de los métodos debe ser declarado abstracto.
Para declarar una clase o método como abstractos, se utiliza la palabra reservada
abstract.

Más contenido relacionado

PDF
Algebra booleana 1-1
PPTX
Base de datos con conclusion
PPTX
Pilas, colas, y listas estructura de datos
PDF
Automatas y gramaticas
PDF
Sistema hexadecimal
PPTX
Modelos de arquitecturas de computadoras
DOCX
Listas como estructura de datos..
PDF
Resolución de ejercicios compuertas lógicas
Algebra booleana 1-1
Base de datos con conclusion
Pilas, colas, y listas estructura de datos
Automatas y gramaticas
Sistema hexadecimal
Modelos de arquitecturas de computadoras
Listas como estructura de datos..
Resolución de ejercicios compuertas lógicas

La actualidad más candente (20)

DOCX
Dispositvos de entrada y salida
DOCX
Ejercicios de matrices y vectores en c++
DOCX
Aplicaciones de los árboles y grafos
PPTX
Metodos de busqueda
PPTX
Expresiones regulares
PPTX
tipos de requisitos
PPT
Ejercicios
DOCX
PPTX
Tipos de búsqueda en Inteligencia Artificial
PPTX
Automatas Finitos Deterministicos y No Deterministicos
PPTX
Algoritmo lineal
DOCX
CUADRO COMPARATIVO ENTRE MODELO OSI Y TCP/IP
PDF
Java 9 - Módulos
PPTX
Mapa conceptual poo
PPT
Poo 3 herencia
PPTX
Lenguajes de programacion tema 2_compiladores e interpretes
PPTX
Librerias de C++
PPT
Métodos POO
PPTX
Librerias Básicas y sus Funciones Lenguaje de Programación C
Dispositvos de entrada y salida
Ejercicios de matrices y vectores en c++
Aplicaciones de los árboles y grafos
Metodos de busqueda
Expresiones regulares
tipos de requisitos
Ejercicios
Tipos de búsqueda en Inteligencia Artificial
Automatas Finitos Deterministicos y No Deterministicos
Algoritmo lineal
CUADRO COMPARATIVO ENTRE MODELO OSI Y TCP/IP
Java 9 - Módulos
Mapa conceptual poo
Poo 3 herencia
Lenguajes de programacion tema 2_compiladores e interpretes
Librerias de C++
Métodos POO
Librerias Básicas y sus Funciones Lenguaje de Programación C
Publicidad

Similar a Clases abstractas (20)

PDF
Abstraccion
PDF
Abstraccion
PDF
Abstracción
PDF
Abstraccion
PDF
Abstraccion
PDF
Resumen abstraccion
DOCX
Abstracción en poo
DOCX
PDF
Abstracción
DOCX
Abstraccion
PDF
Abstracción 14k
DOCX
Abstraccion en programacion orientada en objetos
PDF
Abstracción
DOCX
Abstraccionomar
DOCX
Universidad regional autónoma de lo1
PPTX
DOCX
PLANIFICACION SEMANA 3 DE PROGRAM Y BASE DE DATS SEGUNDO T1 T2.docx
DOCX
clase, objeto, herencia
PDF
Guia prezi
Abstraccion
Abstraccion
Abstracción
Abstraccion
Abstraccion
Resumen abstraccion
Abstracción en poo
Abstracción
Abstraccion
Abstracción 14k
Abstraccion en programacion orientada en objetos
Abstracción
Abstraccionomar
Universidad regional autónoma de lo1
PLANIFICACION SEMANA 3 DE PROGRAM Y BASE DE DATS SEGUNDO T1 T2.docx
clase, objeto, herencia
Guia prezi
Publicidad

Más de Ruben Robles (19)

PDF
Auditoria sistema ti
PDF
Hackear contraseña
PDF
Plantilla proyecto aler tic_
PDF
Informe de auditoria
PDF
Sistemas de telecomunicaciones
PDF
Centro de telecomunicaciones
PDF
Tarea 3
PDF
Polimorfismo
PDF
Enlace punto a punto pinos la victoria
PDF
Trabajo bdoo unidad 4_cp
PDF
Trabajo bdoo unidad 4_cp
PDF
Mr mer ddd
PDF
Trabajo final plan de las comunicaciones
PDF
Transaccionb
PDF
Gestion de recursos humanos
PDF
Mapa mental gestionar_el_equipo_del_proyecto
PDF
Estandares de ti
PDF
Aplicacion movil
PDF
A1 ap los usb
Auditoria sistema ti
Hackear contraseña
Plantilla proyecto aler tic_
Informe de auditoria
Sistemas de telecomunicaciones
Centro de telecomunicaciones
Tarea 3
Polimorfismo
Enlace punto a punto pinos la victoria
Trabajo bdoo unidad 4_cp
Trabajo bdoo unidad 4_cp
Mr mer ddd
Trabajo final plan de las comunicaciones
Transaccionb
Gestion de recursos humanos
Mapa mental gestionar_el_equipo_del_proyecto
Estandares de ti
Aplicacion movil
A1 ap los usb

Clases abstractas

  • 1. NOMBRE: ADRIANA BERENICE RENOVATO CEJA CARRERA: INGENIERÍA EN. TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN MATRICULA: 481200555 GRADO Y GRUPO: 9° CUATRIMESTRE “A” MATERIA: PROGRAMACIÓN DE APLICACIONES UNIDAD: “CONCEPTOS AVANZADOS DE LA POO” PROFESOR: I.S.C OMAR EMMANUEL LARA JUÁREZ LUGAR Y FECHA: PINOS ZAC, 08 DE JULIO DEL 2015 U N I V E R S I D A D T E C N O L Ó G I C A D E L E S T A D O D E Z A C A T E C A S U N I D A D A C A D É M I C A D E P I N O S T E C N O L O G Í A S D E L A I N F O R M A C I Ó N Y C O M U N I C A C I Ó N
  • 2. ABSTRACCIÓN EN PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción es un término del mundo real que podemos aplicar tal cual lo entendemos en el mundo de la Programación Orientada a Objetos. Algo abstracto es algo que está en el universo de las ideas, los pensamientos, pero que no se puede concretar en algo material, que se pueda tocar. Pues bien, una clase abstracta es aquella sobre la que no podemos crear especímenes concretos, en la jerga de POO es aquella sobre la que no podemos instanciar objetos. ABSTRACCIÓN EN EL MUNDO REAL La programación orientada a objetos sabemos que, de alguna manera, trata de "modelizar" los elementos del mundo real. En el mundo en el que vivimos existe un universo de objetos que colaboran entre sí para realizar tareas de los sistemas. Llevado al entorno de la programación, también debemos programar una serie de clases a partir de las cuales se puedan instanciar objetos que colaboran entre sí para la resolución de problemas. Si asumimos esto, a la vista de las situaciones que ocurren en el mundo real, podremos entender la abstracción. En Herencia en Programación Orientada a Objetos se puede definir jerarquías de clasificación: los animales y dependiendo de éstos tenemos mamíferos, vertebrados, invertebrados. Dentro de los mamíferos tenemos vacas, perros… Animal puede ser desde una hormiga a un delfín o un humano. En nuestro cerebro el concepto de animal es algo genérico que abarca a todos los animales: "seres vivos de un "reino" de la existencia". Si defines animal tienes que usar palabras muy genéricas, que abarquen a todos los animales posibles que puedan existir en el mundo. Por tanto "animal", en términos del lenguaje común, podemos decir que es un concepto genérico, pero no una concreción. En términos de POO decimos que es un concepto abstracto, que implementaremos por medio de una clase abstracta. No instanciaremos animales como tal en el mundo, sino que instanciaremos especímenes de un tipo de animal concreto.
  • 3. En los animales existen propiedades y métodos que pueden ser comunes a todos los animales en general. Los animales podrán tener un nombre o una edad, determinadas dimensiones o podrán desempeñar acciones como morir. Lo que nos debe quedar claro es que no deberíamos poder instanciar un animal como tal. ¿Cómo nace un animal en concreto?, ¿cómo se alimenta? Para responder a esas preguntas necesitamos tener especímenes más concretos. Sí que sé cómo nace o cómo se alimenta una hormiga, o un gorrión, pero no lo puedo saber de un animal genérico, porque puede hacerlo de muchas maneras distintas. HERENCIA Y ABSTRACCIÓN Recuerda Ejemplo: Tengo animales. Hemos acordado que no puedo tener un animal concreto instanciado en un sistema. Si acaso tendré instancias de perros, saltamontes o lagartijas. Pues bien, en los esquemas de herencia este caso nos puede surgir muy habitualmente. En la clase "animal" puedo tener determinadas propiedades y acciones implementadas. Por ejemplo, todos los animales pueden tener un nombre, o una edad (ya sean segundos, días o años de edad). También es posible que pueda definir diversas acciones de una vez para todos los animales de una jerarquía de herencia, por ejemplo, la acción de morir, pues todos morimos igual (simplemente dejamos de existir aunque aquí dependiendo de las creencias de cada uno esto pueda ser discutible). Aunque mi sistema no pueda crear animales como tal, tener definidas esas cuestiones comunes a todos los animales me resulta útil para no tener que programarlas de nuevo en todos los tipos de animales que puedan existir. Simplemente las heredaré en las clases hijas. Sin embargo hay cosas de los animales que no podré implementar todavía. Por ejemplo nacer, alimentarse, etc. No sé cómo va a nacer un animal, pero sé que todos los animales del mundo nacen de algún modo (unos nacen de huevos, otros estaban en la barriga de las hembras y nacen a consecuencia de un parto, etc.) En estos casos nos puede ser útil definir como métodos abstractos en la clase
  • 4. "animal" esos métodos que van a estar presentes en todos los animales, aunque no seamos capaces de implementarlos todavía. public abstract function nacer (); Esto quiere decir que todos los animales del mundo heredarán un método abstracto llamado nacer. En las clases concretas que hereden de animal y donde ya sepamos cómo nace tal animal, por ejemplo, la gallina, podemos implementar ese método, para que deje de ser abstracto. public function nacer () {} Hasta ahora sabemos que hay clases que tienen métodos abstractos, que no somos capaces de implementar todavía y clases en las que se heredan métodos abstractos y en las que seremos capaces de implementarlos. La utilidad de esto la entenderemos mejor en unos instantes, al tratar el polimorfismo, pero de momento debemos ser capaces de asimilar estas definiciones más formales: "Una clase abstracta es aquella en la que hay definidos métodos abstractos, sobre la que no podremos instanciar objetos" Además, en un esquema de herencia, "Si heredamos de una clase abstracta métodos abstractos, tampoco se podrán instanciar objetos de las clases hijas y tendrán que definirse como abstractas, a no ser que implementemos todos y cada uno de los métodos que se habían declarado como abstractos en la clase padre". POLIMORFISMO Y ABSTRACCIÓN Cuando hablamos de polimorfismo explicamos que es una relajación del sistema de tipos por la cual éramos capaces de aceptar objetos de un tipo y de todas las clases hijas. Por ejemplo, tengo la clase "PoligonoRegular". Sé que los polígonos regulares voy a querer conocer su área, pero para saber su área necesito conocer el número de lados que tiene tendrá un método abstracto "dameArea()".. Tenemos "Alumnos de una Universidad", los alumnos los vas a querer matricular en las universidades, pero dependiendo del tipo de alumno la matrícula se hace diferente. Entonces, en la clase "alumno" tendré un método abstracto que sea "matriculate ()" que podré definir del todo cuando implemente las clases hijas.
  • 5. Gracias a que fueron definidos los métodos abstractos "dameArea ()" y "matriculate ()" en las clases padres. Ahí está la potencia del polimorfismo, recibir un objeto que pertenece a una jerarquía de clasificación y saber que puedo pedirle determinadas cosas. Quizás en la clase padre no pudieron implementarse esos comportamientos, porque no sabíamos el código necesario para ello, pero al menos se declararon que iban a poder realizarse en el futuro en clases hijas. Eso me permite, en un esquema de polimorfismo, que pueda estar seguro que todos los objetos que reciba puedan responder a acciones determinadas, pues en las clases hijas habrán sido definidas necesariamente (si no se definen deberían declararse las clases como abstractas y en ese caso es imposible que me manden objetos de esa clase).
  • 6. CONCLUSIÓN Las clases abstractas son superclases incompletas „no se pueden instanciar, las clases abstractas soportan polimorfismo. Una clase Abstracta No puede ser instanciada (no se pueden crear objetos directamente - new), solo puede ser heredada. La importancia de implementar clases y métodos abstractos en Programación Orientada a Objetos (POO), mantenemos nuestra aplicación más organizada y fácil de entender sino que también al no poder instanciar una clase abstracta nos aseguramos de que las propiedades específicas de esta, solo estén disponibles para las clases hijas o derivadas, también estas clases permiten crear interfaces que luego deben ser implementadas por las clases que hereden de la clase abstracta. Una clase abstracta puede tener datos (atributos) e implementar métodos y propiedades como una clase normal. DEFINICIÓN Clase Abstractas: Es una clase de la cual no se puede instanciar, se usa únicamente para definir subclases, puede contener métodos no-abstractos pero al menos uno de los métodos debe ser declarado abstracto. Para declarar una clase o método como abstractos, se utiliza la palabra reservada abstract.