Sei sulla pagina 1di 51

INSTITUTO SUPERIOR TECNOLGICO PBLICO

PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

SEMANAS
13, 14, 15

I UNIDAD
Carrera Profesional: Computacin e Informtica
Semestre: III
Seccin: nica

Docente: Ing. JUAN J. ARAUJO ROMO


Asignatura: ESTRUCTURA DE LA INFORMACION
Semestre Acadmico: 2010 - I

OBJETOS Y CLASES
1.

DEFINICION DE CLASE:

Una clase es como una plantilla de la cual se pueden crear varios objetos
con las mismas caractersticas y funciones.
o Una clase es un modelo (diseo) de objeto
o Define los atributos y operaciones del objeto
o La clase usan el encapsulamiento para forzar la abstraccin

Una clase es una representacin de un objeto en particular, y define un


nuevo tipo de dato. Las clases de utilizan para crear objetos de ese tipo de
clase en particular

El nombre de toda clase debe comenzar con maysculas

El nombre de los objetos con minsculas

Pgina

Ejemplo de una clase en notacin UML

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

2.

UNA CLASE EN JAVA


Para crear una clase se utiliza la palabra reservada class y a
continuacin el nombre de la clase. La definicin de la clase se pone entre
las llaves de apertura y cierre. El nombre de la clase empieza con una letra
mayscula.
Sintaxis:
class NombreClase
{
//miembros dato o datos miembro
//funciones miembro
}

Ejemplo 1:
public class Empleado
{
Cuerpo de la clase
}

3.

DEFINICIN DE OBJETO:
Objeto es una instancia de la clase, los objetos tienen las siguientes
cualidades (identidad los objetos se distinguen del uno del otro,
comportamiento pueden realizar tareas, estado almacena informacin
que vara a travs del tiempo).

4.

DECLARACION DE OBJETOS:
Para crear un objeto o una instancia de esta clase tenemos dos
alternativas, la primera en la misma lnea de declaracin, tal como se ilustra
a continuacin.
Sintaxis 1:

Pgina

NombreVariable = new NombreClase ( )

NombreClase NombreVariable;

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Sintaxis 2:
NombreClase NombreVariable = new NombreClase ( )

Ejemplo 2:
Empleado A1 = new Empleado ();

5.

ASIGNACION DE OBJETOS
Cuando creamos un objeto internamente existe un puntero, al que no
tenemos acceso, pero cuando asignamos objetos lo que realmente estamos
asignando son las direcciones de memoria donde estn definidos los
objetos.

Ejemplo 3:
Empleado A1 = new Empleado ();

Pgina

Empleado A2 = A1;

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

6.

ATRIBUTOS
Los atributos son las caractersticas individuales que diferencian un
objeto de otro y determinan su apariencia, estado u otras cualidades. Los
atributos se guardan en variables denominadas de instancia, y cada objeto
particular puede tener valores distintos para estas variables.

Las variables de instancia tambin denominados miembros dato,


son declaradas en la clase pero sus valores son fijados y cambiados en el
objeto.

Sintaxis:
[TipoAcceso] TipoNombre

Ejemplo 4: Como ejemplo definiremos la clase Artculo que tiene definido


3 atributos

Clase Articulo

La implementacin de esta clase seria:


public class Articulo
{
public int codigo;
public String nombre;

Docente Ing. Juan J. ARAUJO ROMO

Pgina

public double precio;

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

El siguiente programa ilustra cmo debe usarse la clase Articulo:


public class Articulo
{
public static void main(String[ ] args)
{
// Creacin de dos objetos

Articulo art1 = new Articulo();


Articulo art2 = new Articulo();
Articulo art3;

// Asignacin de datos

art1.codigo = 100;
art1.nombre = "Televisor";
art1.precio = 500; art2.codigo = 200;
art2.nombre = "Plancha";
art2.precio = 80;
art3 = art1;

// Imprimir artculos
System.out.println(art1.codigo + "-" + art1.nombre + "-" + art1.precio);
System.out.println(art2.codigo + "-" + art2.nombre + "-" + art2.precio);
System.out.println(art3.codigo + "-" + art3.nombre + "-" + art3.precio);
}
}

Docente Ing. Juan J. ARAUJO ROMO

Pgina

artculos.

Analice ahora Ud. cada lnea del programa anterior y modifique para 5

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

7.

COMPORTAMIENTO METODOS
El comportamiento de los objetos de una clase se implementa
mediante funciones miembro o mtodos. Un mtodo es un conjunto de
instrucciones que realizan una determinada tarea y son similares a las
funciones de los lenguajes estructurados. Del mismo modo que hay
variables de instancia y de clase, tambin hay mtodos de instancia y de
clase. En el primer caso, un objeto llama a un mtodo para realizar una
determinada tarea, en el segundo, el mtodo se llama desde la propia clase.

Sintaxis
[modificador] tipo NombreMetodo(tipo parm1, tipo parm2, tipo parm3, . . .)
{
declaraciones de variables locales;
//...sentencias
[return[ (]expresin[ )]];
}

Ejemplo 5:

En el siguiente ejemplo se ilustra el uso de mtodos, para

eso se ha definido una clase de nombre Calculadora que tiene definidos


atributos pblicos n1 y n2, dos operaciones suma() y producto().

Clase Calculadora
public class Calculadora
{

Pgina

public int n2;

public int n1;

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

public int suma()


{
return (n1 + n2);
}

public int producto()


{
return (n1 * n2);
}
}

Para ilustrar el uso de la clase Calculadora, se crea el programa aplicacal.


public class aplicacal
{
public static void main(String[ ] args)
{
Calculadora obj = new Calculadora ();
obj.n1 = 10;
obj.n2 = 8;

System.out.println("n1 = " + obj.n1);


System.out.println("n2 = " + obj.n2);
System.out.println("Suma = " + obj.suma());
System.out.println("Producto = " + obj.producto());
}
}

el siguiente ejemplo tenemos una segunda versin

Pgina

de la clase Calculadora donde las operaciones tienen parmetros.

Ejemplo 6: En

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Clase Calculadora
public class Calculadora
{
public int suma (int n1, int n2)
{
return (n1 + n2);
}
public int producto (int n1, int n2)
{
return (n1 * n2);
}
}
Para ilustrar el uso de la clase Calculadora, se crea el programa
aplicacalcu.
public class aplicacalcu
{
public static void main(String[ ] args)
{
int a = 15;
int b = 8;
Calculadora obj = new Calculadora();
System.out.println("n1 = " + a);
System.out.println("n2 = " + b);
System.out.println("Suma = " + obj.suma(a,b));
System.out.println("Producto = " + obj.producto(a,b));

Pgina

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Ejemplo 7:

Disee una clase Empleado; cuyos atributos sean

nombre, apellido y edad, con Mtodo u operaciones de registrar y mostrar.

Empleado

Notacin UML:

El nombre de toda clase debe comenzar con maysculas

El nombre de los objetos con minsculas


Pgina

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

CLASE EMPLEADO
public class Empleado
{
private String Nombre;
private String Apellido;
private int Edad;
public void Registrar(String Nombre, String Apellido, int Edad)
{
this.Nombre = Nombre;
this.Apellido= Apellido;
this.Edad = Edad;
}
public void Mostrar()
{
System.out.println("Nombre "+ Nombre);
System.out.println("Apellido"+ Apellido);
System.out.println("Edad"+ Edad);
}
}
CLASE PRINCIPAL
public class principal
{
public static void main(String[ ] args)
{
Empleado A1= new Empleado();
A1.Registrar("Juan","Hurtado", 22);
A1.Mostrar();

Pgina

10

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

8.

MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE


Una faceta importante de los lenguajes de Programacin Orientada
a Objetos se denomina encapsulacin. El acceso a los miembros de una
clase est controlado. Para usar una clase, solamente necesitamos saber
que funciones miembro se pueden llamar y a qu datos podemos acceder,
no necesitamos saber cmo est hecha la clase, como son sus detalles
internos. Una vez que la clase est depurada y probada, la clase es como
una caja negra. Los objetos de dicha clase guardan unos datos, y estn
caracterizados por una determinada conducta.

Este ocultamiento de la informacin niega a las entidades exteriores


el acceso a los miembros privados (private) de un objeto. De este modo, las
entidades exteriores acceden a los datos de una manera controlada a travs
de alguna funcin miembro. Para acceder a un miembro pblico (public), sea
dato o funcin basta escribir:

objeto_de_la_clase.miembro_pblico_no_esttico
clase.miembro_pblico_esttico

La

segunda

representacin se

ampliar

cuando

veamos

miembros dato esttico y mtodos estticos.

8.1. MIEMBROS PBLICOS:


Los miembros pblicos son aquellos que tienen delante la
palabra public, y se puede acceder a ellos sin ninguna restriccin.

8.2. MIEMBROS PRIVADOS:


Los miembros privados son aquellos que tienen delante la

Pgina

mbito de la clase.

11

palabra private, y se puede acceder a ellos solamente dentro del

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

8.3. POR DEFECTO (A NIVEL DE PAQUETE)


Cuando

no

se

pone

ningn

modificador

de

acceso

delante de los miembros, se dice que son accesibles dentro del


mismo paquete (package).

Esto es lo que hemos utilizado en algunos de los ejemplos


estudiados antes. package es la primera sentencia que se pone en
un archivo .java. El nombre del paquete es el mismo que el nombre
del subdirectorio que contiene los archivos .java. Cada archivo .java
contiene habitualmente una clase. Si tiene ms de una solamente
una de ellas es pblica. El nombre de dicha clase coincide con el
nombre del archivo. El uso de paquetes se estudiar ms adelante.

Como se habr dado cuenta hay una correspondencia


entre archivos y clases, entre paquetes y subdirectorios. El
Entorno Integrado de Desarrollo (IDE) en el que creamos los
programas facilita esta tarea sin que el usuario se aperciba de
ello.

EJEMPLO 8: Uso de los modificadores de acceso package


//archivo: Linea.java

import java.io.*;
class Linea
{
//coordenada 1er punto, modificador de acceso:package
int x1,y1;

Pgina

int x2,y2;

12

//coordenada 2do punto, modificador de acceso:package

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

void leer() //modificador de acceso:package


{
try
{
// Definir un flujo de caracteres de entrada: flujoE
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);
String sdato; // variable para almacenar una lnea de texto

//lectura
System.out.println("Introduzca 1er punto: ");
System.out.print("x1: ");
sdato = flujoE.readLine(); // leer una lnea de texto
x1=Integer.parseInt(sdato);//convierte cadena
System.out.print("y1: ");
sdato = flujoE.readLine(); // leer una lnea de texto
y1=Integer.parseInt(sdato);//convierte cadena

System.out.println("Introduzca 2do punto: ");


System.out.print("x2: ");
sdato = flujoE.readLine(); // leer una lnea de texto
x2=Integer.parseInt(sdato);//convierte cadena
System.out.print("y2: ");

sdato = flujoE.readLine(); // leer una lnea de texto


y2=Integer.parseInt(sdato);//convierte cadena
}

Docente Ing. Juan J. ARAUJO ROMO

Pgina

{ }

13

catch (IOException ignorada)

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

void escribir() //modificador de acceso:package


{
System.out.println("Puntos de la recta : ");
System.out.println("x1="+x1+" y1="+y1);
System.out.println("x2="+x2+" y2="+y2);
}
}

// Archivo LineaAppl.java

import java.io.*;
class LineaAppl
{
public static void main (String[] args)
{
//Creacin de un objeto recta: r1
Linea r1 = new Linea();

// uso del objeto r1 como el modificador de acceso es package


//y la clase Linea est en el mismo directorio entonces main()
// puede utilizar los mtodos leer() y escribir()

r1.leer();
r1.escribir();
}

Pgina

14

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

EJEMPLO 9:

Uso del modificador de acceso privado (private). El

siguiente programa es similar al anterior salvo que los mtodos de la clase


Linea son private.
//archivo: Linea1.java
import java.io.*;

class Linea1
{
//coordenada 1er punto, modificador de acceso:package
int x1,y1;
//coordenada 2do punto, modificador de acceso:package
int x2,y2;

private void leer( ) //modificador de acceso:privado


{
try
{
// Definir un flujo de caracteres de entrada:

flujoE InputStreamReader isr = new InputStreamReader(System.in);


BufferedReader flujoE = new BufferedReader(isr);

String sdato; // variable para almacenar una lnea de texto

//lectura
System.out.println("Introduzca 1er punto: ");

Pgina

sdato = flujoE.readLine(); // leer una lnea de texto

15

System.out.print("x1: ");

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

x1=Integer.parseInt(sdato);//convierte cadena
System.out.print("y1: ");
sdato = flujoE.readLine(); // leer una lnea de texto
y1=Integer.parseInt(sdato);//convierte cadena

System.out.println("Introduzca 2do punto: ");


System.out.print("x2: ");
sdato = flujoE.readLine(); // leer una lnea de texto
x2=Integer.parseInt(sdato);//convierte cadena
System.out.print("y2: ");
sdato = flujoE.readLine(); // leer una lnea de texto
y2=Integer.parseInt(sdato);//convierte cadena
}
catch (IOException ignorada)
{}
}

private void escribir( ) //modificador de acceso:privado


{
System.out.println("Puntos de la recta : ");
System.out.println("x1="+x1+" y1="+y1);
System.out.println("x2="+x2+" y2="+y2);
}
}

// Archivo Linea1Appl.java

import java.io.*;

{
public static void main (String[] args)

Docente Ing. Juan J. ARAUJO ROMO

Pgina

16

class Linea1Appl

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

{
//Creacin de un objeto recta: r1
Linea1 r1=new Linea1();

// uso del objeto r1


//como el modificador de acceso de los metodos de la clase Linea es privado
//entonces main() no puede utilizar los mtodos leer() y escribir()

r1.leer();
r1.escribir();
}
}

NOTA: Este programa no ejecuta porque el compilador protesta


mostrando el siguiente mensaje:

EJEMPLO 10:

Uso del modificador private y public. Ntese como

la funcin main(), puede acceder a los mtodos pblicos de la clase


Linea2.
//archivo: Linea2.java

import java.io.*;

class Linea2
{
//coordenada 1er punto, modificador de acceso:privado
private int x1,y1;

//los datos miembro solo sern accedidos por sus mtodos por ser privados

Docente Ing. Juan J. ARAUJO ROMO

Pgina

private int x2,y2;

17

//coordenada 2do punto, modificador de acceso:privado

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

public void leer() //modificador de acceso:pblico


{
try
{
// Definir un flujo de caracteres de entrada:
flujoE InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);

String sdato; // variable para almacenar una lnea de texto


//lectura
System.out.println("Introduzca 1er punto: ");
System.out.print("x1: ");
sdato = flujoE.readLine(); // leer una lnea de texto
x1=Integer.parseInt(sdato);//convierte cadena

System.out.print("y1: ");
sdato = flujoE.readLine(); // leer una lnea de texto
y1=Integer.parseInt(sdato);//convierte cadena

System.out.println("Introduzca 2do punto: ");


System.out.print("x2: ");
sdato = flujoE.readLine(); // leer una lnea de texto
x2=Integer.parseInt(sdato);//convierte cadena

System.out.print("y2: ");
sdato = flujoE.readLine(); // leer una lnea de texto
y2=Integer.parseInt(sdato);//convierte cadena
}

Docente Ing. Juan J. ARAUJO ROMO

Pgina

{}

18

catch (IOException ignorada)

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

public void escribir() //modificador de acceso:pblico


{
System.out.println("Puntos de la recta : ");
System.out.println("x1="+x1+" y1="+y1);
System.out.println("x2="+x2+" y2="+y2);
}
// Archivo Linea2Appl.java

import java.io.*;
class Linea2Appl
{
public static void main (String[] args)
{
//Creacin de un objeto recta: r1
Linea2 r1=new Linea2();
// uso del objeto r1 como el modificador de acceso de los mtodos
//de la clase Linea
// es public entonces main() puede utilizar los mtodos leer() y
//escribir()
r1.leer();
r1.escribir();
}
}

9.

OCULTANDO DATOS

del modo que le corresponde, por ejemplo solo lectura, solo escritura o
ambos.

Docente Ing. Juan J. ARAUJO ROMO

Pgina

que el usuario solo debe tener acceso a los datos que son de su inters y

19

Uno de los fundamentos de la programacin orientada a objetos es

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Para conseguir esto se debe implementar los atributos como


privados y se debe implementar mtodos para acceso a ellos, existe un
estndar para definir este mtodo.
Por ejemplo; si el atributo es apellido los mtodos serian:
setapellido : este mtodo permite asignar un valor al atributo.
getapellido : este mtodo permite leer el valor del atributo.
Como puede apreciar existen dos prefijos, el prefijo set que se utiliza
para asignar un valor al atributo y el prefijo get para leer el valor del atributo,
de esta manera podemos seleccionar si se implementa el mtodo set, get, o
ambos, y restringir el novel de acceso nivel de acceso a los datos.
Otra posibilidad que nos da la implementacin de estos mtodos es
agregar funcionalidad que puede servir para verificar por ejemplo si el -2 se
esta signando es correcto o no.

EJEMPLO 11: Realizar un programa que ilustra el uso de mtodos para

Pgina

Clase Artculo en notacin UML:

20

acceder a los campos de un objeto.

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Clase Articulo
public class Articulo
{
private int codigo;
private String nombre;
private double preCosto;
private double preVenta;
public void setCodigo(int nCodigo)
{
codigo = nCodigo;
}
public void setNombre(String sNombre)
{
nombre = sNombre;
}
public void setPreCosto(double nPreCosto )
{
preCosto = nPreCosto;
preVenta = preCosto * 1.4;
}
public int getCodigo()
{
return codigo;
}
public String getNombre()
{
return nombre;
}
public double getPreCosto()
{

Pgina

21

return preCosto;

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

public double getPreVenta()


{
return preVenta;
}
}
Clase progprincipal
public class progprincipal
{
public static void main(String[ ] args)
{
Articulo art1 = new Articulo();
art1.setCodigo( 1000 );
art1.setNombre( "Auto" );
art1.setPreCosto( 15000 );
System.out.println("Codigo = " + art1.getCodigo() );
System.out.println("Nombre = " + art1.getNombre() );
System.out.println("Precio Costo = " + art1.getPreCosto() );
System.out.println("Precio Venta = " + art1.getPreVenta() );
}
}
Como se puede apreciar el precio de venta se calcula de manera
automtica cuando establecemos el precio de costo, esto debido a que
utilizamos un mtodo para asignar el precio de costo, por otro lado el precio
de venta slo puede ser ledo (slo lectura), ms no existe manera alguna
de cambiar su valor, a menos que cambiemos el precio de costo.

10. SOBRECARGA
La sobrecarga permite definir dos ms mtodos que comparten el

Java.

Docente Ing. Juan J. ARAUJO ROMO

Pgina

de las caractersticas muy importante de la POO, y por lo tanto tambin de

22

nombre, pero la declaracin de sus parmetros debe ser diferente. Esta una

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Cuando se invoca a un mtodo sobrecargado, Java utiliza el tipo


y/o nmero parmetros como gua para determinar a qu versin del
mtodo sobrecargado debe llamar. Por lo tanto, los mtodos sobrecargados
deben ser diferente tipo y/o nmero de parmetros.

EJEMPLO 12:

En este ejemplo ilustraremos el uso de la sobrecarga,

para lo cual implementamos una clase que permita convertir a String un


nmero, dependiendo el nmero se ejecutar el mtodo que le corresponde.

Clase miconvertidor con una funcin sobrecargada

La clase que se utilizara para esta demostracin es miconvertidor, tal


como se aprecia en la figura, tenemos el mtodo convert sobrecargado.
Clase miconvertidor
public class miconvertidor
{
public String convert(int n)
{
return (Integer.toString(n));
}
public String conver(long n)
return (Long.toString(n));

Pgina

23

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

public String convert(float n)


{
return (Float.toString(n));
}
public String convert(double n)
{
return (Double.toString(n));
}
}
El programa que ilustra el uso de esta clase es el siguiente:

Clase aplicaconvert
public class aplicaconvert
{
public static void main(String[] args)
{
miconvertidor obj = new miconvertidor();
int n1 = 500;
long n2 = 100000;
float n3 = 456.459834f;
double n4 = 8934.42573485720;

System.out.println("n1 = " + obj.convert(n1));


System.out.println("n2 = " + obj.convert(n2));
System.out.println("n3 = " + obj.convert(n3));
System.out.println("n4 = " + obj.convert(n4));

Pgina

24

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

11. CONSTRUCTORES
Los

constructores

permiten

inicializar

un

objeto

inmediatamente despus de su creacin, tienen el mismo nombre


que la clase donde se encuentra y sintcticamente son similares de los
mtodos.

Sintaxis
public nombre_clase (lista_de_parmetros )
{
// instrucciones
}
El constructor se invoca cuando creamos el objeto, junto con el operador
new.

Sintaxis
nombre_clase nombre_variable;
nombre_variable = new nombre_clase( lista_de_argumentos );

Los constructores tienen el mismo nombre de la clase, y no tienen


tipo, esto debido a que retornan el mismo tipo de la clase, el objetivo
principal de un constructor es inicializar el estado interno del objeto.

EJEMPLO 13:

En

este ejemplo crearemos una clase de nombre

Docente Ing. Juan J. ARAUJO ROMO

Pgina

Clase Empleado con un Constructor

25

empleado, que tiene un constructor que inicializa sus atributos

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Clase Empleado
public class Empleado
{
// Atributos:
private String nombre;
private double sueldo;
private int edad;
// Constructor:
public Empleado()
{
nombre = "Claudia";
sueldo = 5000.00;
edad = 22;
}
// Operaciones:
public String getNombre()
{
return this.nombre;
}
public double getSueldo()
{
return this.sueldo;
}
public int getEdad()
{
return this.edad;
}

Pgina

26

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

El programa que ilustra el uso de esta clase es el siguiente, puede notar


que el constructor se invoca junto con el operador new.
Clase aplicaempleado
public class aplicaempleado
{
public static void main(String[] args)
{
Empleado obj = new Empleado( );
System.out.println( "Nombre = " + obj.getNombre() );
System.out.println( "Sueldo = " + obj.getSueldo() );
System.out.println( "Edad = " + obj.getEdad() );
}
}
12. CONSTRUCTORES CON PARMETROS
Los

constructores

pueden

resultar

ms

tiles

si

tienen

parmetros, en nuestro ejemplo de la clase Empleado, resulta que no


todos los empleados se llaman claudia, el ejemplo siguiente ilustra el uso de
constructores con parmetros.

EJEMPLO 14:

El siguiente ejemplo ilustra el uso de constructores

Docente Ing. Juan J. ARAUJO ROMO

Pgina

Clase Empleado1 con un constructor con parmetros

27

con parmetros la clase utilizada es Empleado1.

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Clase Empleado1
public class Empleado1
{
// Atributos:
private String nombre;
private double sueldo;
private int edad;
// Constructor:
public Empleado1(String nombre, double sueldo, int edad)
{
this.nombre = nombre; this.sueldo = sueldo; this.edad = edad;
}
// Operaciones:
public String getNombre()
{
return this.nombre;
}
public double getSueldo()
{
return this.sueldo;
}
public int getEdad()
{
return this.edad;
}

diferentes datos, as podemos tener un objeto para empleado.

Docente Ing. Juan J. ARAUJO ROMO

Pgina

El constructor de esta clase permite inicializar los objetos con

28

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

El programa que ilustra el uso de esta clase es el siguiente:


Clase aplicaempleado1
public class aplicaempleado1
{
public static void main(String[] args)
{
Empleado1 obj = new Empleado1( "Angelica", 4000, 23 );

System.out.println( "Nombre = " + obj.getNombre() );


System.out.println( "Sueldo = " + obj.getSueldo() );
System.out.println( "Edad = " + obj.getEdad() );
}
}

Puede notar que el constructor se invoca junto con el operador new y


es en esa instruccin que se le pasa los datos para que inicialice los
objetos.

13. SOBRECARGA DE CONSTRUCTORES


Al igual que los mtodos, los constructores tambin pueden ser
sobrecargados, esto quiere decir, que podemos tener diferentes
constructores dependiendo de los datos de los que disponemos.

EJEMPLO 15:
En este ejemplo se ilustra cmo construir clases con constructores

Figura.

Docente Ing. Juan J. ARAUJO ROMO

Pgina

tenemos cuatro versiones del constructor, tal como se aprecia en la

29

sobrecargados la clase que se utiliza es Empleado2, en esta clase

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Clase Empleado2 con constructor sobrecargado

Los datos de un empleado son: nombre, sueldo y edad, cunado falta el


sueldo se asume un sueldo base que est definido en SUELDO_BASE
y cuando falta la edad se asume cero.

Clase Empleado2
public class Empleado2
{
// Atributos:
private String nombre;
private double sueldo;
private int edad;
private static final double SUELDO_BASE = 5000.00;
// Constructores:
public Empleado2(String nombre, double sueldo, int edad)
{
this.nombre = nombre;
this.sueldo = sueldo;

Pgina

30

this.edad = edad;

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

public Empleado2(String nombre, double sueldo)


{
this( nombre, sueldo, 0 );
}
public Empleado2(String nombre, int edad)
{
this( nombre, SUELDO_BASE, edad );
}
public Empleado2(String nombre)
{
this( nombre, SUELDO_BASE );
}
// Operaciones:
public String getNombre()
{
return nombre;
}
public double getSueldo()
{
return sueldo;
}
public int getEdad()
{
return edad;
}

Pgina

31

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

El programa que ilustra el uso de esta clase es el siguiente:


Clase aplicaempleado2
public class aplicaempleado2
{
public static void main(String[] args)
{
Empleado2 emp1 = new Empleado2 ( "Gustavo", 15000.0, 30 );
Empleado2 emp2 = new Empleado2 ( "Ricardo", 27 );
Empleado2 emp3 = new Empleado2 ( "Sergio" );
System.out.println( "Empleado 1" );
System.out.println( "Nombre = " + emp1.getNombre() );
System.out.println( "Sueldo = " + emp1.getSueldo() );
System.out.println( "Edad = " + emp1.getEdad() );
System.out.println();
System.out.println( "Empleado 2" );
System.out.println( "Nombre = " + emp2.getNombre() );
System.out.println( "Sueldo = " + emp2.getSueldo() );
System.out.println( "Edad = " + emp2.getEdad() );
System.out.println();
System.out.println( "Empleado 3" );
System.out.println( "Nombre = " + emp3.getNombre() );
System.out.println( "Sueldo = " + emp3.getSueldo() );
System.out.println( "Edad = " + emp3.getEdad() );
System.out.println();
}
}
Del resultado obtenido podemos deducir que a Ricardo se le asign el

nombre, por lo tanto se le asign el sueldo base y edad cero.

Docente Ing. Juan J. ARAUJO ROMO

Pgina

de crear el objeto, en el caso de Sergio solo se especific su

32

sueldo base debido que no se le especifico su sueldo al momento

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

SEMANA
16

I UNIDAD
Carrera Profesional: Computacin e Informtica
Semestre: III
Seccin: nica

Docente: Ing. JUAN J. ARAUJO ROMO


Asignatura: ESTRUCTURA DE LA INFORMACION
Semestre Acadmico: 2010 - I

HERENCIA
1.

DEFINICION DE HERENCIA:
La

herencia

es

la

caracterstica ms

sobresaliente de

la

programacin orientada a objetos, porque permite definir una jerarqua de


clases, y de esta manera reutilizar sus definiciones.

Mediante la herencia el programador puede crear una clase


genrica que defina los rasgos comunes de un conjunto de objetos, luego
esta clase puede ser heredada por otras clases ms especficas, cada
una de las cuales aadir aquellos rasgos que la hacen nica.

2.

FUNDAMENTOS
Por si misma, la idea de objeto es una herramienta ms que buena.
Permite empaquetar datos y funcionalidad, de manera que es posible
representar cualquier idea del universo del problema mediante clases.

Es posible utilizar clases ya definidas para crear a partir de estas


nuevas clases (clase heredada), y luego agregarle funcionalidad adicional
segn necesidades de esta nueva clase.

En terminologa de la POO, una clase heredada se llama

las definiciones de la superclase (atributo y mtodos) ya aade su propia


funcionalidad.

Docente Ing. Juan J. ARAUJO ROMO

Pgina

subclase es una versin especializada de la superclase, que hereda todas

33

superclase, y la clase que hereda se denomina subclase. Por lo tanto, una

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Notacin UML para representar la herencia.

La Figura nos representa la herencia utilizando notacin UML, la


flecha apunta a la

superclase, y

es

posible que existan muchas

subclases que hereden una superclase.

A la superclase tambin se le conoce como clase base, clase


super, o clase padre; y a la subclase tambin se le conoce como clase
derivada, heredada, o clase hija.

Ejemplo 16:
de

En este ejemplo veremos un caso bsico, pero ilustrativo

aplicacin de herencia, tenemos

una

clase

base

de

nombre

CalculadoraBase, y una subclase de nombre Calculadora1 que hereda de

Ejemplo bsico de aplicacin de herencia.


Docente Ing. Juan J. ARAUJO ROMO

Pgina

34

CalculadoraBase.

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

En la Figura se puede apreciar que la subclase hereda los mtodos


suma y resta, he implementa los mtodos factorial y esPrimo.

Una instancia de la clase CalculadoraBase solo tendr los


mtodos suma

y resta, mientras que una instancia de la clase

Calculadora1 tendr los mtodos heredados suma y resta, y adems sus


mtodos propios factorial y esPrimo.

continuacin

tenemos

la

implementacin

de

la

clase

alculadoraBase, usted puede apreciar claramente la implementacin de


los mtodos suma y resta.
Clase CalculadoraBase.java
public class CalculadoraBase
{
public int suma(int n1, int n2)
{
return (n1+n2);
}

public int resta(int n1, int n2)


{
return (n1 - n2);
}
}

continuacin

tenemos

la

implementacin

de

la

clase

que est heredando de la

clase CalculadoraBase, y puede usted

Pgina

apreciar que solo se est implementando los nuevos mtodos.

35

Calculadora1, la palabra extends en !a definicin de la clase indica

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Clase Calculadora1.java
public class Calculadora1 extends CalculadoraBase
{
public int factorial(int n)
{
int f = 1;
while(n>1)
{
f=f*
n--;
}
return f;
}

public Boolean esPrimo(int n)


{
Boolean primo = true;
int k = 1;
while(++k<n)
{
if( n % k == 0 )
{
primo = false;
break;
}
}
return primo;

Pgina

36

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

A continuacin tenemos el programa ilustrativo del uso de la clase


Calculadora1 solo se est creando una instancia de esta clase (cal), y
debido a la herencia tenemos acceso a los mtodos suma y resta, que
son los mtodos heredados, y los mtodos propios factorial y esPrimo.
Clase prog14

public class prog14


{
public static void main(String[] args)
{
int n1 = 17, n2 = 6;
Calculadora1 cal = new Calculadora1();

System.out.println( "n1 = " + n1 );


System.out.println( "n2 = " + n2 );
System.out.println( "Suma: " + cal.suma(n1,n2) );
System.out.println( "Resta: " + cal.resta(n1,n2) );
System.out.println( "Factorial de " + n2 + " es " + cal.factorial(n2) );
System.out.println( n1 + " es primo: " + cal.esPrimo(n1) );
}
}

3.

IMPLEMENTANDO LA HERENCIA

Palabra Clave: extends

existe la herencia mltiple.

Docente Ing. Juan J. ARAUJO ROMO

Pgina

En Java solo se puede heredar desde una clase, en otras palabras no

37

La palabra clave extends permite implementar la herencia de clases.

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Sintaxis
class nombre_subclase extends nombre_superclase
{
// implementacin
}

Ejemplo de herencia.

Por

ejemplo,

en

la

Figura

tenemos

una

clase

base

CuentaBancaria que define las caractersticas comunes a todas las


cuentas, y a partir de esta se obtiene dos subclases CuentaAhorro y
CuentaCorriente.

A continuacin tenemos cdigo bsico para la implementacin de


estas clases:
public class CuentaBancaria
{
//Implementacin
}
public class CuentaAhorro extends CuentaBancaria
{
//Implementacin
}
public class CuentaCorriente extends CuentaBancaria

Docente Ing. Juan J. ARAUJO ROMO

Pgina

//Implementacin

38

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

4.

PALABRAS CLAVES this y super

4.1. Palabra Clave: this:

Esta palabra clave hace referencia al objeto actual, y puede


utilizarse dentro de cualquier mtodo.

Por ejemplo, si tenemos la clase Demo:

class Demo
{
private int n;
public void setN( int n )
{
this.n = n;
}
}
En esta clase tenemos una variable privada n, y un mtodo
setN para asignar un valor a la variable, pero resulta que el
parmetro del mtodo tiene el mismo nombre que la variable de
la clase, por lo tanto, la nica manera de hacer referencia a la
variable de la clase es mediante la palabra clave this, tal como se
ilustra en el script.

La palabra clave this por si sola hace referencia al constructor

Pgina

39

de la misma clase.

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Ejemplo 17: En

este ejemplo veremos la aplicacin de la palabra

clave this, la clase que utilizaremos es Empleado.

Clase Empleado.java
public class Empleado
{
// Atributos:
private int codigo;
private String nombre;
private Double sueldo;
// Constructores:
public Empleado(int codigo, String nombre, Double sueldo)
{
this.codigo = codigo;
this.nombre = nombre;
this.sueldo = sueldo;
}
public Empleado(String nombre)
{
this( 1000, nombre, 3500.00 );
}
// operaciones
public String toString()

}
}

Docente Ing. Juan J. ARAUJO ROMO

Pgina

return codigo + " " + nombre + " " + sueldo;

40

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Esta clase tiene tres campos privados: cdigo, nombre y sueldo;


tiene tambin dos constructores, el primero recibe tres datos (cdigo,
nombre y sueldo), mientras que el segundo recibe solo el nombre y
asume los otros dos datos, tal como se puede apreciar en el script, pero
invoca al primer constructor mediante la palabra clave this; el otro mtodo
(toString) retorna una cadena con los tres datos del empleado.

Programa ilustrativo para el uso de la clase Empleado.

Clase prog15.java

public class prog15


{
public static void main(String[ ] args)
{
Empleado emp1 = new Empleado ( 500, "Claudia",
4000.00 );
Empleado emp2 = new Empleado ( "Laura" );
System.out.println( "Empleado 1: " + emp1.toString() );
System.out.println( "Empleado 2: " + emp2.toString() );
}
}
En el programa anterior podemos observar que la segunda instancia
(emp2) se crea solo con el nombre del empleado (Laura), pero
internamente se le asigna cdigo 1000 y sueldo 3500.00, si revisamos la

Pgina

invoca al primer constructor utilizando la palabra clase this.

41

clase Empleado, esto se realiza a travs del segundo constructor que

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

4.2. PALABRA CLAVE: super


Permite a una subclase hacer referencia a la superclase
inmediata superior. Esta palabra clave tiene dos formas generales:
la primera es para llamar al constructor de la superclase y la
segunda es para acceder a un miembro de la superclase que se ha
ocultado por un miembro de la subclase.
Invocar Constructores de la Superclase
Para invocar constructores de la superclase, se deben
realizar desde el constructor de la subclase.
Sintaxis:
super(lista_de_parametros );

En este caso, lista_de_parametros especifica cualquier


parmetro que necesite el constructor en la superclase. super
(lista_de_parametros) debe ser la primera sentencia que se ejecute
dentro del constructor de la subclase.
Acceder a Miembros de la Superclase
La palabra clave super acta de manera similar a this, pero
en este caso se hace referencia a la superclase.
Sintaxis:
super, miembro

En este caso el miembro puede ser un mtodo o una variable


de instancia.
Esta forma de usar la palabra clave super tiene mayor

Pgina

miembros de igual nombre en la superclase.

42

aplicacin, sobre todo cuando miembros de la subclase ocultan

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Ejemplo 18:

En este ejemplo veremos la aplicacin de la palabra

clase super para invocar al constructor de la superclase.

Se trata de una superclase Persona y dos subclases Trabajador y


Docente, desde estas subclases se invocar al constructor de la
superclase.
Clase Persona.java
public class Persona
{
// Atributos:
private int codigo;
private String nombre;
private Double sueldo;
// Constructores:
public Persona(int codigo, String nombre, Double sueldo)
{
this.codigo = codigo;
this.nombre = nombre;
this.sueldo = sueldo;
}
// Operaciones:
public String toString()
{
return ( codigo + " - " + nombre + " - " + sueldo );
}
}
Esta clase tiene un constructor a travs del cual se asigna los datos,

Pgina

y separados por un guin.

43

y un mtodo (toString) que retorna los datos de la persona concatenados

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Clase Trabajador.java
public class Trabajador extends Persona
{
// Operaciones:
public Trabajador(int codigo, String nombre, Double sueldo, Double bonificacion)
{
super( codigo, nombre, sueldo + bonificacion );
}
public String toString()
{
return ( "Trabajador: " + super.toString() );
}
}
El constructor de esta clase invoca al constructor de la clase Persona a
travs de la palabra super, se est pasando la suma del sueldo y la
bonificacin como sueldo del trabajador.

Tambin se est redefiniendo el mtodo toString, peor est invocando al


mtodo toString de la clase Persona a travs de la palabra clave super,
y a su resultado se le est concatenando la palabra Trabajador.
Clase Docente.java
public class Docente extends Persona
{
// Operaciones:
public Docente(int codigo, String nombre, int horas, Double importePorHora)
{
super( codigo, nombre, horas * importePorHora );
}
public String toString()

}
}

Docente Ing. Juan J. ARAUJO ROMO

Pgina

return ( "Docente: " + super.toString() );

44

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

En el constructor de esta clase tambin se est invocando al


constructor de la clase Persona, el sueldo se est calculado como el
producto de la cantidad de horas (horas) por el importe por hora
(importePorHora).

De igual forma se est redefiniendo el mtodo toString y se est


accediendo al mtodo toString de la clase Persona a travs de la
palabra super, y a su resultado se le est concatenando la palabra
Docente.

A continuacin tenemos el programa ilustrativo:


Clase prog16.java
public class prog16
{
public static void main(String[ ] args)
{
Trabajador tra = new Trabajador ( 500, "Julio Flores", 2000.00,
500.00 );
Docente doc = new Docente ( 501, "Gustavo Coronel", 150, 50.00 );

System.out.println();
System.out.println( tra.toString() + "\n" );
System.out.println( doc.toString() );
}
}

cadena que retorna el mtodo toString de cada una de ellas


respectivamente.

Docente Ing. Juan J. ARAUJO ROMO

Pgina

trabajador y otra de la clase Empleado, luego estamos imprimiendo la

45

En este programa estamos creando dos instancias, una de la clase

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Ejemplo 19:

La clase base es Figura, y de ella van a heredar las

clases Polgono y Circulo. A su vez, de Polgono heredarn las clases


Cuadrado y Triangulo. El diagrama esquemtico de clases es el
siguiente:

La clase base Figura solo tiene dos atributos: nombre de la figura y


permetro (longitud total de su borde exterior) y, aparte del constructor,
un nico mtodo llamado imprimirInformacion que imprime por pantalla
la informacin de la figura.

Docente Ing. Juan J. ARAUJO ROMO

Pgina

public class Figura


{
String nombre;
double perimetro;
public Figura(String nombre, double perimetro)
{
this.nombre = nombre;
this.perimetro = perimetro;
}
public void imprimirInformacion()
{
System.out.println("Soy un "+nombre+" y mi permetro es
"+perimetro+" m");
}
public static void main(String[] args)
{
Figura cuad= new Figura("cuadrado", 2*4);
Figura circ= new Circulo(2);
Figura tria= new Figura("triangulo", (3*3));
cuad.imprimirInformacion();
circ.imprimirInformacion();
tria.imprimirInformacion();
}
}

46

Aqu est la clase Figura programada:

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

En el mtodo main, crea tres objetos y luego imprime la


informacin de cada uno de ellos: un cuadrado de lado 2 metros, un
crculo de radio 2 metros y un tringulo de lado 3 metros.

Compila y ejecuta el programa. La salida por pantalla debera ser la


siguiente:

Clase Crculo.java

Ahora vas a programar la clase Circulo, que hereda de la clase


anterior Figura. Esta nueva clase tiene un atributo ms (aparte de los
heredados), de tipo double, que almacena el radio del crculo, que se le
pasa en el constructor. El radio nos sirve para calcular el permetro del
crculo (2*pi*radio).

Adems

esta

clase

sobrescribe

el

mtodo

anterior

imprimirInformacion para aadir un mensaje ms explicativo con el valor


del radio.

El cdigo de la clase Circulo es el siguiente:


public class Circulo extends Figura
{
double radio;

public Circulo(double radio)


{
super("Circulo", 2*Math.PI*radio);
this.radio = radio;

Pgina

47

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

public void imprimirInformacion()


{
System.out.println("Soy un circulo y mi radio es "+radio+
" m, con lo que mi perimetro es "+perimetro+" m");
}

public static void main(String[] args)


{
Figura c1= new Circulo(2);
Figura c2= new Circulo(3);
c1.imprimirInformacion();
c2.imprimirInformacion();
}
}

El mtodo main, se crea dos objetos de la clase Circulo, uno de


radio 2 metros y otro de radio 3 metros, e imprime su informacin.
Tras compilar y ejecutar el programa, la salida por pantalla debera ser la
siguiente:

Clase Polgono.java

Ahora toca la clase Polgono, muy parecida a la clase Circulo


anterior. La diferencia es que en vez de radio los atributos del polgono
son el nmero de lados y la longitud de cada lado, con los que podemos
calcular el valor del permetro.

mtodo main crea dos polgonos, uno de 3 lados con longitud 3

Pgina

(tringulo) y otro de 4 lados con longitud 4 (cuadrado).

48

Este ejercicio consiste en programar la clase Polgono. En el

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

El cdigo de la clase Poligono es el siguiente:


public class Poligono extends Figura
{
int numeroLados;
double longitudLado;

public Poligono(String nombre, int numeroLados, double longitudLado)


{
super(nombre,(numeroLados*longitudLado));
this.numeroLados=numeroLados;
this.longitudLado=longitudLado;
}

public void imprimirInformacion()


{
System.out.println("Soy un polgono "+nombre+", tengo
"+numeroLados+ " lados de longitud "+longitudLado+
" m, por lo que mi permetro es "+perimetro+ " m");
}

public static void main(String[ ] args)


{
Figura c= new Poligono("Cuadrado",4,2);
Figura t= new Poligono("Tringulo",3,2);

c.imprimirInformacion();
t.imprimirInformacion();

Pgina

49

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Clases Cuadrado.java y Tringulo.java

Slo quedan las clases Cuadrado y Triangulo, que derivan de la clase


Poligono. Estas dos clases no tienen atributos nuevos y ni siquiera
sobreescriben el mtodo imprimirInformacion.

Programa las dos clases. En cada una de ellas, aade un main que cree
dos objetos.

Las clases son los siguientes:

Clase Cuadrado.java
public class Cuadrado extends Poligono
{
public Cuadrado(double longitudLado)
{
super("Cuadrado",4,longitudLado);
}

public static void main(String[ ] args)


{
Figura c1= new Cuadrado(2.0);
Figura c2= new Cuadrado(5.0);

c1.imprimirInformacion();
c2.imprimirInformacion();

Pgina

50

Docente Ing. Juan J. ARAUJO ROMO

INSTITUTO SUPERIOR TECNOLGICO PBLICO


PAMPAS - TAYACAJA
FORMACIN PROFESIONAL TECNOLGICA

Clase Triangulo.java

public class Triangulo extends Poligono


{
public Triangulo(double longitudLado)
{
super("Triangulo",3,longitudLado);
}

public static void main(String[ ] args)


{
Figura t1= new Triangulo(2.0);
Figura t2= new Triangulo(5.0);

t1.imprimirInformacion();
t2.imprimirInformacion();
}

Pgina

51

Docente Ing. Juan J. ARAUJO ROMO

Potrebbero piacerti anche