Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Investigacion Programacion
Investigacion Programacion
INGENIERÍA EN MECATRONICA
MATERÍA
PROGRAMACION AVANZADA
ALUMNO:
JOSE MUÑIZ BECERRA
NUMERO DE CONTROL:
188N0452
GRUPO:
608-D
FECHA DE ENTREGA:
8 DE MAYO DEL 2021
PRESENTA:
“INVESTIGACION 4”
DOCENTE:
FEBRERO-JULIO 2021
TIERRA BLANCA, VER.
Índice
4.1 definición
poliformismo
4.2 Clases abstractas definición
métodos abstractos
implementación de clases abstractas
modelado de clases abstractas
4.3 reutilización de código
Introducción
En esta investigación veremos cómo funcionan las clases abstractas en
programación es más utilizada en la orientación de objetos y los diferentes
lenguajes de la programación en los que se puede utilizar.
4.1 Definición
Polimorfismo
.
La superclase de dicha jerarquía podría ser muy parecida a ésta:
public abstract class figura {
protected String nombre;
protected int color;
protected int grosorBorde;
El polimorfismo en acción
Supongamos que deseamos saber la figura que tiene mayor área
independientemente de su forma. Primero, programamos una función que
halle el mayor de varios números reales positivos.
double valorMayor(double[] x){
double mayor=0.0;
for (int i=0; i<x.length; i++)
if(x[i]>mayor){
mayor=x[i];
}
return mayor;
}
Ahora, la llamada a la función valorMayor
double numeros[]={3.2, 3.0, 5.4, 1.2};
System.out.println("El valor mayor es "+valorMayor(numeros));
La función figuraMayor que compara el área de figuras planas es
semejante a la función valorMayor anteriormente definida, se le pasa el
array de objetos de la clase base Figura. La función devuelve una
referencia al objeto cuya área es la mayor.
static Figura figuraMayor(Figura[] figuras){
Figura mFigura=null;
double areaMayor=0.0;
for(int i=0; i<figuras.length; i++){
if(figuras[i].area()>areaMayor){
areaMayor=figuras[i].area();
mFigura=figuras[i];
}
}
return mFigura;
}
La clave de la definición de la función está en las líneas
if(figuras[i].area()>areaMayor){
areaMayor=figuras[i].area();
mFigura=figuras[i];
}
import java.util.*;
// Un tipo de Guitarra
class Guzla extends Guitarra {
public void tocar() {
System.out.println("Guzla.tocar()");
}
public void afinar() {
System.out.println("Guzla.afinar()");
}
}
// Un tipo de Guitarra
class Ukelele extends Guitarra {
public void tocar() {
System.out.println("Ukelele.tocar()");
}
public String tipo() { return "Ukelele"; }
}
Una forma de hacer esto es crear objetos de nuestras clases existentes dentro de
la nueva clase. Esto se conoce como composición porque la nueva clase está
compuesta de objetos de clases existentes. Estamos reutilizando la funcionalidad
del código, y no la forma.
Otra forma es crear una nueva clase como un tipo de una clase ya existente.
Tomamos la forma de la clase existente y añadimos código a la nueva, sin
modificar la clase existente. Esta forma de crear nuevos objetos se llamada
herencia, y lo que hacemos es extender la clase en la que nos basamos para
crear la nueva.
Composición:
Hasta ahora hemos usado la composición de cierta manera, ej. cuando hacemos
una interfaz gráfica de usuario, nuestra clase de interfaz gráfica esta compuesta
por un frame, unos panel, botones, etc. todos estos objetos componen el objeto de
interfaz gráfica. Es decir que la composición consiste en poner manejadores de
objetos dentro de nuestra clase, estos manejadores de objetos no serán otra cosa
que instancias de las clases en las que nos estamos basando para crear la nueva
clase.
Recordemos que la forma para determinar cuándo usar composición es cuando
podemos decir que nuestra nueva clase “tiene un” elemento de otro tipo de
objetos, por ejemplo un cronómetro tiene: horas, minutos y segundos, es decir que
una clase Cronometro está compuesta por otras clases llamadas: Horas, Minutos
y Segundos.
Veamos como seria esta clase:
public class Cronometro {
Horas h;
Minutos m;
Segundos s;
String cadena;
int seg,min,hor;
public Cronometro() {
seg=0;
min=0;
hor=0;
h = new Horas();
m = new Minutos();
s = new Segundos();
cadena = new String("0 : 0 : 0");
}
De esta manera sin necesidad de tener que escribir nuevamente todos el código
de UnidadDeTiempo lo tememos disponible en la clase Horas, pero que partes
tenemos disponibles?, todos los atributos y los métodos de la clase padre están
disponibles en la clase hija pero dependiendo de los modificadores de acceso o
visibilidad de estos, por ejemplo los atributos y métodos de tipo friendly solo
estarán disponibles para las clases hijas que heredan de una clase padre en el
mismo paquete, los atributos y métodos de tipo public estarán disponibles para
todas las clases que hereden de la clase padre sin importar que se halle o no en el
mismo paquete; los miembros protected también son accesibles desde las clases
hijas.
El código de nuestra clases hijas no tienen porque limitarse solo al código
heredado, de hecho casi siempre la herencia se hace para extender la
funcionalidad de las clases heredadas añadiendo nuevos métodos y atributos.
La composición y la herencia:
Tanto la composición como la herencia permiten poner sub-objetos dentro de tu
nueva clase. Podríamos preguntarnos cuál es la diferencia entre los dos, y cuándo
elegir uno en lugar del otro. La composición es generalmente usada cuando
deseamos las características de una clase existente dentro de una nueva clase,
pero no su interfaz. Es decir, ponemos un para poder usarlo para implementar
características de nuestra nueva clase, pero el usuario de esa nueva clase verá el
interfaz que hemos definido en lugar del interfaz del objeto insertado.
Conclusión
En esta investigación pudimos aprender sobre el uso de las clases abstractas y
cuál es su utilidad en la programación orientada a objetos, en la vida real no tiene
una utilidad ya que tiene una función no definida.
Bibliografías
https://sites.google.com/site/wwwprogramacionorientadacom/41-definicin
https://sites.google.com/site/wwwguiadeprogramacioncom/42-clases-abstractas-definicin-
mtodos-abstractos-implementacion-de-clases-abstractas-modelado-de-clases-abstractas
https://sites.google.com/site/wwwguiadeprogramacioncom/45-reutilizacion-del-cdigo