You are on page 1of 12

UNIVERSIDAD AUTONÓMA

DEL ESTADO DE MORELOS


Facultad de Contaduría, Administración
E informática

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.

You might also like