Você está na página 1de 15

PILARES DE LA PROGRAMACION

ORIENTADA A OBJETOS

❖ Nombre del alumno: Ricardo Perez Ocampo

❖ Nombre del Profesor: Blanca Estela Pichardo Orozco

❖ Materia: Ingeniería de software III

❖ Licenciatura: Informática

❖ Turno: Matutino

❖ Fecha: 17/02/19

❖ Semestre: 7º U
Introducción a la Programación Orientada a Objetos

La Programación Orientada a Objetos (POO) es una técnica para escribir programas. Es decir, es
la aplicación de un lenguaje orientado a objetos para implementar una solución previamente
diseñada, usando el paradigma orientado a objetos.
La POO tiene cuatro características principales: abstracción, encapsulamiento, herencia y
polimorfismo. La abstracción consiste en ignorar aquellos aspectos, del objeto a describir, que no
son relevantes, para de esta manera concentrarse en los que sí lo son. El encapsulamiento
consiste en incluir dentro de una clase todos los atributos y métodos que la definen, de tal manera
que otros objetos puedan usarla sin necesidad de conocer su estructura interna. La herencia
permite compartir atributos y métodos entre clases y subclases. Finalmente, en el polimorfismo una
operación puede tener el mismo nombre en diversas clases, y funcionar de manera diferente en
cada una. Estos temas se tratarán en las siguientes secciones y capítulos.

Características de la POO

En el diseño de la solución computacional de problemas se distinguen los datos (información


necesaria para llevar a cabo el procesamiento) y las operaciones que podemos hacer sobre ellos.
La POO ofrece mecanismos para representar, de manera integrada, los datos y las operaciones.
Como ya se mencionó, la POO tiene ciertas características que la convierten en una poderosa
herramienta para solucionar diversos problemas computacionales. A continuación, se presentan las
características más importantes.

• Abstracción: Es el principio que permite (al observar el objeto o concepto que se quiere
representar) ignorar aquellos aspectos que no son relevantes, para de esta manera
concentrarse en los que sí lo son. Se trata de abstraer los datos (llamados atributos) y las
operaciones (llamadas métodos) comunes a un conjunto de objetos y agruparlos bajo un
mismo concepto clase. Es decir, facilita la generalización conceptual de los atributos y
propiedades de un determinado conjunto de objetos. De esta forma, introducir o eliminar un
objeto en una determinada aplicación requerirá un trabajo mínimo.

Abstracción
• Encapsulamiento: (ocultamiento de información). Se refiere a incluir dentro de la definición
de una clase todo lo que se necesita, de tal forma que ningún otro objeto requiera conocer
su estructura interna para poder usarla. Es decir, se tomará cada clase y en consecuencia
cada objeto como una unidad básica de la cual desconocemos su estructura interna. En la
figura 1.1 se grafica esta idea, señalando a la clase (formada por atributos y métodos) como
una caja negra.

• Herencia: Permite compartir atributos y métodos entre clases y clases derivadas. Las clases
derivadas, también llamadas subclases, heredan atributos y métodos de las clases
superiores, que reciben el nombre de superclases o clases base.

Observe el ejemplo de la figura 1.2. La clase Persona es una superclase. Las clases Alumno y
Profesor son subclases o clases derivadas de la clase Persona, por lo que heredan todos los
atributos y métodos de ella. Esta relación expresa que un alumno y un profesor también son
personas.
• Polimorfismo: Permite implementar múltiples formas de un mismo método, de tal manera
que cada una de ellas se adapte a la clase sobre la cual se aplicará.

Polimorfismo

El siguiente programa hace uso de la abstracción, polimorfismo, encapsulamiento y herencia

Programa que calcula el perímetro y área de las siguientes figuras geométricas

• Cuadrado
• Triangulo
• Rectángulo
• Romboide
• Trapecio
Código utilizado

//Calculando área y perímetro de cinco figuras Geométricas

//Declarando la Clase Herencia, Superclase o clase base

package Figuras;

public class Herencia

protected String nombre;

protected double area;

protected double perimetro;

public Herencia(String nom)

nombre=nom;

public String getternombre()

return nombre;

public double getterarea()

return area;

public double getterperimetro()

return perimetro;

}
public void dibujar()

System.out.println("Nombre de Figura: "+this.getternombre());

System.out.println("Perimetro de Figura: "+getterperimetro());

System.out.println("Area de Figura: "+getterarea());

// Declarando la subclase o clase derivada Cuadrado

package Figuras;

public class Cuadrado extends Herencia

private double lado;

public Cuadrado(double L)

super("CUADRADO ");

lado=L;

public void settterPerimetro()

this.perimetro=4*lado;

public void setterArea()

super.area=lado*lado;

}
public void dibujar()

super.dibujar();

for(int k = 0;k<lado;k++ )

System.out.print(" *");

System.out.println("");

for(int i = 0;i<lado-2;i++)

System.out.print(" *");

for(int k = 0;k<lado-2;k++)

System.out.print(" ");

System.out.println(" *");

for(int k = 0;k<lado;k++)

System.out.print(" *");

System.out.println("");

}
// Declarando la subclase o clase derivada Rectangulo

package Figuras;

public class Rectangulo extends Herencia

private double base,altura;

public Rectangulo(double b,double a)

super("RECTANGULO ");

base=b;

altura = a;

public void setterperimetro()

this.perimetro=(2*base)+(2*altura);

public void setterArea()

this.area=base*altura;

public void dibujar()

super.dibujar();

for(int k = 0;k<6;k++ )

System.out.print(" *");

System.out.println("");
for(int i = 0;i<4-2;i++)

System.out.print(" *");

for(int k = 0;k<4-2;k++)

System.out.print(" ");

System.out.println(" *");

for(int k = 0;k<6;k++)

System.out.print(" *");

System.out.println("");

//Declarando la subclase o clase derivada Romboide

package Figuras;

public class Romboide extends Herencia

private double base,altura,lado;

public Romboide(double b,double a,double l)

super("ROMBOIDE ");

base=b;

altura = a;

lado = l;
}

public void setterperimetro()

this.perimetro= (2*base)+(2*lado);;

public void setterArea()

this.area= base*altura;

public void dibujar()

super.dibujar();

// Declarando la subclase o clase derivada Trapecio

package Figuras;

public class Trapecio extends Herencia

private double altura,bm,l,base;

public Trapecio(double BM,double h,double lado,double bm)

super("TRAPECIO ");

base=BM;

altura = h;

l = lado;

this.bm = bm;

}
public void setterperimetro()

this.perimetro = ((base)+(2*l)+(this.bm));

public void setterArea()

this.area= ((base+bm)*altura)/2;

public void dibujar()

super.dibujar();

//Declarando la subclase o clase derivada Triangulo

package Figuras;

public class Triangulo extends Herencia

private double altura,lado1base,lado2,lado3;

public Triangulo(double b,double a,double lado2,double lado3)

super("TRIANGULO ");

lado1base=b;

altura = a;

this.lado2 = lado2;

this.lado3 = lado3;

}
public void setterperimetro()

this.perimetro=lado1base+lado2+lado3;

public void setterArea()

this.area=(lado1base*altura)/2;

public void dibujar()

super.dibujar();

// Clase de Prueba que incluye la funcion principal

package Figuras;

import java.util.Scanner;

public class Prueba

public static void main(String[] args)

Scanner entrada =new Scanner(System.in);

double lado,base,altura,lado2,lado3,bm;

System.out.print("Ingrese el lado del cuadrado: ");

lado=entrada.nextDouble();

Cuadrado objcuadro=new Cuadrado(lado);

objcuadro.settterPerimetro();
objcuadro.setterArea();

objcuadro.dibujar();

System.out.print("\n Ingrese la base del rectangulo: ");

base=entrada.nextDouble();

System.out.print("Ingrese la altura del rectangulo: ");

altura=entrada.nextDouble();

Rectangulo objrectangulo=new Rectangulo(base,altura);

objrectangulo.setterperimetro();

objrectangulo.setterArea();

objrectangulo.dibujar();

System.out.print("\n Ingrese la base del Triangulo: ");

base=entrada.nextDouble();

System.out.print("Ingrese la altura del Triangulo: ");

altura=entrada.nextDouble();

System.out.print("Ingresa un lado del triangulo: ");

lado2=entrada.nextDouble();

System.out.print("Ingra otro lado del triangulo ");

lado3=entrada.nextDouble();

Triangulo objtriangulo=new Triangulo(base,altura,lado2,lado3);

objtriangulo.setterperimetro();

objtriangulo.setterArea();

objtriangulo.dibujar();

System.out.print("\n Ingrese la base del romboide: ");

base=entrada.nextDouble();

System.out.print("Ingrese la altura del romboide: ");

altura=entrada.nextDouble();

System.out.print("Ingrese el lado del romboide: ");

lado=entrada.nextDouble();

Romboide objromboide = new Romboide(base,altura,lado);


objromboide.setterperimetro();

objromboide.setterArea();

objromboide.dibujar();

System.out.print("Ingresa la base del Trapecio: ");

base = entrada.nextDouble();

System.out.print("Ingresa la altura del Trapecio ");

altura = entrada.nextDouble();

System.out.print("Ingresa la base menor del Trapecio: ");

bm = entrada.nextDouble();

System.out.print("Ingresa el lado del Trapecio: ");

lado = entrada.nextDouble();

Trapecio objtrapecio = new Trapecio(base,altura,lado,bm);

objtrapecio.setterperimetro();

objtrapecio.setterArea();

objtrapecio.dibujar();

System.out.println("\n");

Bibliografía
Guardati Buemo, S. (2007). Estructura de datos orientada a objetos:. Mexico: PEARSON
EDUCACIÓN.

Você também pode gostar