You are on page 1of 21

POO en JAVA NetBeands

9 Sesin

Herramientas de Desarrollo de Software - Ing. Carlos Rojas Castro

POO
Objetos y clases
Codificacin
Encapsulamiento
Polimorfismo
Herencia

PROGRAMACIN ORIENTADA A OBJETOS


INTRODUCCIN.
Un programa tradicional, que sigue el paradigma estructurado, se basa fundamentalmente en la
ecuacin de Wirth:

Algoritmos + Estructuras de Datos = Programas


Esta ecuacin se interpreta como que los algoritmos y los datos se tratan por separado. De esta
forma las funciones o procedimientos que tratan estos datos los van procesando y pasando de unos a
otros hasta obtener el resultado deseado. Pero cuando se lanz la programacin orientada a
objetos (POO), revolucion la historia de la programacin; se introdujeron al lenguaje diario de
los profesionales del rea de computacin e informtica, conceptos tales como abstraccin,
encapsulamiento, herencia y polimorfismo; que hicieron que el modo de pensar y concebir el
desarrollo de sistemas informticos, fuera muy diferente a lo que haba sido hasta ese momento
con la programacin estructurada.
La POO es el paradigma de programacin ms utilizado en la actualidad. Su consistente base
terica y la amplia gama de herramientas, permiten crear cdigo a travs de diseos orientados a
objetos, y esto lo convierte en la alternativa ms adecuada para el desarrollo de aplicaciones
avanzadas de sistemas informticos de calidad. En la POO se tiene dos elementos fundamentales,
las clases y los objetos.
Clase
Permite representar cualquier elemento de la realidad, ya sea un individuo como un alumno, libro,
automvil o un proceso como matrcula, venta, entre otros. Algunos autores definen a una clase como
un plantilla donde bsicamente se definen 2 elementos:

Propiedades

Vienen a ser caractersticas de una clase, tambin reciben el nombre alternativo de atributos.

Mtodos
Vienen a ser acciones que puede realizar la clase, se les conoce tambin como operaciones o
comportamientos.

POO en JAVA NetBeands

Objeto

Los objetos se crean a partir de una clase, es decir, la plantilla o molde es la clase y los elementos
que puedo crear a partir de dicho molde son los objetos.
Se dice que las clases son genricas
mientras que los objetos vienen a ser
especficos, ya que una clase
ALUMNO puede incluir la propiedad
NOMBRE, por ende un objeto de la
clase ALUMNO incluir la propiedad
NOMBRE y adicionalmente un valor
especfico como por ejemplo AMY.
Cuando hablamos de un objeto,
hablamos de pequeos elementos
bien definidos, representaciones
verdaderas
de
objetos
que
tenemos en la vida real.
Los objetos son aquellos que
tienen sus propios atributos y sus
propios comportamientos; es decir
cada objeto es nico y no puede
confundirse con otro.
En la Figura se muestra algunas clases y objetos del mundo real.

Pgina 2

POO en JAVA NetBeands

Entonces mediante el uso e implementacin de la metodologa de Programacin Orientada


a Objetos intentamos crear objetos de software que tengan correlacin con los objetos del
mundo real; por ejemplo en un mdulo de facturacin de un sistema de gestin comercial, vamos
a crear nuestro objeto Factura, que tendr relaciones con nuestro objeto Cliente, y Producto;
la aplicacin de esta concepcin de trabajo es la que nos permiten aislar cada componente
del resto de la aplicacin y de esa forma aprovechar en mayor medida nuestro esfuerzo,
nuestra concentracin en el buen funcionamiento de dichos componentes, nuestro control sobre
ellos, ms control en la codificacin y por sobre todas las cosas, reutilizar el cdigo escrito.

1.1.

ABSTRACCIN.

La abstraccin se puede definir como la capacidad de examinar algo sin preocuparse de los
detalles internos. La abstraccin es la capacidad de un objeto de cumplir sus funciones
independientemente del contexto en el que se lo utilice; por ejemplo, un objeto Cliente
siempre expondr sus mismas propiedades y dar los mismos resultados a travs de sus eventos,
sin importar el mbito en el cual se lo haya creado.
1.2.

ENCAPSULAMIENTO

Esta caracterstica es la que denota la capacidad del objeto de responder a peticiones a


travs de sus mtodos sin la necesidad de exponer los medios Utilizados para llegar
a brindar estos resultados. Por ejemplo el mtodo MostrarSaldo() del objeto Cliente antes
mencionado, siempre nos va a dar el saldo de la cuenta de un cliente, sin necesidad de tener
conocimiento de cules son los recursos que ejecuta para llegar a brindar este resultado.
1.3.

HERENCIA

En resumen la herencia es reutilizacin de cdigo, es decir, que se puede crear clases que son
reutilizables en otros escenarios.
La herencia es la propiedad que permite a los objetos construirse a partir de otros objetos. Una
clase se puede dividir en subclases. Las subclases pueden heredar cdigo y datos de su clase base
aadiendo su propio cdigo y datos a la misma. La herencia impone una relacin jerrquica entre
clases, en la cual una clase hija hereda de su clase padre.

1.4.

Si una clase slo puede recibir caractersticas de otra clase base, la herencia se denomina herencia
simple.
Si una clase recibe propiedades de ms de una clase base, la herencia se denomina herencia
mltiple.
POLIMORFISMO

En un sentido literal, polimorfismo significa la cualidad de tener ms de una forma. En el


contexto de POO, el polimorfismo se refiere al hecho de que una misma operacin puede
tener diferente comportamiento en diferentes objetos.

Pgina 3

POO en JAVA NetBeands

Por ejemplo, consideremos la operacin sumar. El operador + realiza la suma de dos nmeros
de diferente tipo. Adems se puede definir la operacin de concatenar dos cadenas mediante el
operador +.
El trmino de polimorfismo define la capacidad de que ms de un objeto puedan crearse usando la
misma clase de base para lograr dos conceptos de objetos diferentes.
Veamos el siguiente esquema grfico, que muestra una clase padre (MedioTransporte) con tres clases
hijas (Barco, Avin, Auto):

CLASE
Permite representar cualquier elemento de la realidad, ya sea un individuo como un alumno, libro, automvil
o un proceso como matrcula, venta, entre otros. Una clase es como una plantilla de la cual se pueden crear
varios objetos con las mismas caractersticas y funciones.
Una clase es un modelo (diseo) de objeto
Define los atributos y operaciones del objeto
La clase usan el encapsulamiento para forzar la abstraccin.

Notacin UML:
-El nombre de toda Clase debe comenzar con Maysculas
-El nombre de los objetos con Minsculas NOTACIN UML Y JAVA

Pgina 4

POO en JAVA NetBeands

La siguiente es la definicin ms simple de una clase en JAVA:


<mbito> class NombreClase {

/* Declaracin de la clase */

/* Aqu va ladefinicin de variables y mtodos */


}
Como se puede observar, la definicin de una clase consta de dos partes fundamentales:
a) La declaracin de la clase. Aqu se indica el nombre de la clase precedido por la palabra clave
class.
b) El cuerpo de la clase. El cuerpo de la clase sigue a la declaracin de la clase y est contenido
entre la pareja de llaves ({ y }). El cuerpo de la clase contiene las declaraciones de las variables
de la clase, y tambin la declaracin y la implementacin de los mtodos que operan sobre dichas
variables.
Declaracin de variables de instancia. El estado de un objeto est representado por sus
variables (variables de instancia). Las variables de instancia se declaran dentro del cuerpo de
la clase. Tpicamente, las variables de instancia se declaran antes de la declaracin de los
mtodos, pero esto no es necesariamente requerido.
Implementacin de mtodos. Los mtodos de una clase determinan los mensajes que un objeto
puede recibir.
Las partes fundamentales de un mtodo son el valor de retorno, el nombre, los argumentos
(opcionales) y su cuerpo. Adems, un mtodo puede llevar otros modificadores opcionales
que van al inicio de la declaracin del mtodo y que se analizarn ms adelante.
La
sintaxis de un mtodo es la siguiente:
<otrosModificadores> valorRetorno nombreMetodo( <lista de argumentos> ){
/* Cuerpo del mtodo */
sentencias;
}

Pgina 5

POO en JAVA NetBeands

Nota. Los signos<> indican que no son obligatorios.


Los mtodos en Java pueden ser creados nicamente como parte de una clase. Cuando se
llama a un mtodo de un objeto se dice comnmente que se enva un mensaje al objeto.
Ejemplo:
CODIFICACIN DE LA 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);
}
}
CREACIN DE OBJETOS.
Una vez que se tiene definida la clase a partir de la cual se crearn los objetos se est en la
posibilidad de instanciar los objetos requeridos.
Para la clase Persona del ejemplo anterior podemos crear un objeto de la siguiente manera:
Persona usuario1; //usuario1 es una variable del tipo Persona (declaracin del objeto)
usuario1=newPersona(); // iniciacin del objeto usuario1
La primera lnea corresponde a la declaracin del objeto, es decir, se declara una variable del tipo
de objeto deseado y la segunda lnea corresponde a la iniciacin del objeto. Tambin el mismo
objeto se puede crear de la siguiente manera:
Persona usuario1=newPersona();
a) El operador new. El operador new crea una instancia de una clase asignando la cantidad de
memoria necesaria de acuerdo al tipo de objeto. El operador new se utiliza en conjunto con un
constructor. El operador new regresa una referencia a un nuevo objeto.

En el programa principal.
public class principal{
public static void main(String[] args) {
Empleado A1= new Empleado();

Pgina 6

POO en JAVA NetBeands

A1.Registrar("Juan","Hurtado", 22);
A1.Mostrar();
}
}
b) Constructores. Un constructor es un tipo especfico de mtodo que siempre tiene el mismo nombre
que la clase, y que se utiliza cuando se desean crear objetos de dicha clase, es decir, se utiliza
al crear e iniciar un objeto de una clase.
c) Constructores mltiples. Cuando se declara una clase en JAVA, se pueden declarar uno o ms
constructores (constructores mltiples) opcionales que realizan la iniciacin cuando se instancia un objeto
de dicha clase.
ACCESO A VARIABLES Y MTODOS
Una vez que se ha creado un objeto, seguramente se querr hacer algo con l. Tal vez se requiera obtener
informacin de ste, se quiera cambiar su estado, o se necesite que realice alguna tarea. Los objetos tienen
dos formas de hacer esto.
a) Manipular sus variables directamente.
punto (.). La sintaxis es la siguiente:

Para accesar a las variables de un objeto se utiliza el operador

nombreObjeto.nombreVariable;
b) Llamar a sus mtodos. Para llamar a los mtodos de un objeto, se utiliza tambin el operador punto (.).
La sintaxis es la siguiente:
nombreObjeto.nombreMetodo( <lista de argumentos opcionales> );

Actividad:
El usuario le solicita desarrollar un programa para clculo de impuestos sobre ventas.
Este programa tiene como propsito calcular el valor que debe pagarse por concepto de impuesto
sobre ventas e impuesto al activo neto para un monto dado por el usuario.
Ud. Desarrolla el programa utilizando sus conocimientos adquiridos en Programacin Estructurada,
para hacer dos versiones, una utilizando un estilo procedural, y la otra utilizando un estilo modular.
Cuando termina el programa y lo muestra al usuario, l le dice que el programa est bien, pero que tambin
necesita que para el mismo monto se calcule el impuesto al activo neto.
A continuacin se muestra el desarrollo de este ejercicio utilizando tres tcnicas o estilos:

Programacin Procedural y Programacin Orientada a Objetos.


El funcionamiento del programa ser prcticamente el mismo en los dos casos, pero observar que
utilizando POO el mantenimiento y extensin del programa se va haciendo ms fcil.

Pgina 7

POO en JAVA NetBeands

Calcular el total a pagar por un prstamo, ingresando el monto inicial prestado, la tasa de inters
mensual.
CF = CI(1+i)^n

Donde CF es el capital final, CI es el capital inicial, i es la tasas de inters y n es el plazo o nmero


de periodos.
Realizar un cuadro comparativo entre la programacin estructurada y la POO.
EJERCICIOS:
Para desarrollar y analizar su respectivo atributos y mtodos:
Identifique los datos que decidira utilizar para almacenar el estado de los siguientes objetos en funcin del
contexto en el que se vayan a utilizar:
a.
b.
c.
d.
e.
f.
g.
h.
i.
j.
k.
l.
m.
n.
o.
p.

Un punto en el espacio.
Un segmento de recta.
Un polgono.
Una manzana (de las que se venden en un mercado).
Una carta (en Correos)
Un libro (en una biblioteca)
Un libro (en una librera)
Una cancin (en una aplicacin para un reproductor MP3).
Una cancin (en una emisora de radio)
Un disco de msica (en una tienda de msica).
Un disco de msica (en una discoteca).
Un telfono mvil (en una tienda de telefona)
Un telfono mvil (en el sistema de una empresa de telecomunicaciones)
Un ordenador (en una tienda de Informtica)
Un ordenador (en una red de ordenadores)
Un ordenador (en el inventario de una organizacin)

Declare las correspondientes clases en Java, defina los constructores que considere adecuados e
implemente los correspondientes mtodos para el acceso y la modificacin del estado de los objetos (esto
es, los mtodos de ingreso de datos desde el teclado).

Pgina 8

POO en JAVA NetBeands

ENCAPSULAMIENTO
El encapsulamiento consiste en ocultar los detalles de la implementacin de un objeto, a la vez que se provee
una interfaz pblica por medio de sus mtodos permitidos. Tambin se define como la propiedad de los
objetos de permitir acceso a su estado nicamente a travs de su interfaz o de relaciones preestablecidas
con otros objetos.

Lo que realmente nos importa es el comportamiento de los objetos, no como esta implementado ese
comportamiento.
Si la implementacin cambia, pero su interfaz permanece igual, es decir, la forma como ese objeto
se relaciona con el mundo exterior, los objetos que interaccin con el, no se vern afectados por esos
cambios.
El encapsulamiento oculta la complejidad de la implementacin. Esta propiedad de los objetos la
vivimos en el mundo real en muchas situaciones en que tratamos con cajas negras:

Tal es el caso de la labor de conducir un automvil: no es necesario que usted sepa de mecnica automotriz,
solo tiene que saber cmo interactuar con el vehculo.

El principio del encapsulamiento:


Tambin conocido como ocultacin, permite cambiar la visibilidad de los elementos miembros de la clase,
tanto para atributos como para mtodos. De forma que los elementos miembro de la clase pueden tener
tres niveles as:

private: La variable o mtodo slo es accesible dentro de la clase donde se define.

protected: La variable o mtodo es accesible en la clase en donde se define y en cualquiera de sus


subclases.

public: La variable o mtodo es accesible en cualquier clase.

ninguno de los anteriores: La variable o mtodo es accesible dentro del mismo paquete (directorio).

Pgina 9

POO en JAVA NetBeands

Ejemplo encapsulamiento:

Si se desea flexibilidad, buen mantenimiento y extensibilidad, nuestro diseo en el cdigo debe


de incluir encapsulamiento, para ello debemos de hacer lo siguiente:
o

Mantener las variables de instancia protegidas (puede ser con un modificador de acceso,
por ejemplo: private)

Hacer mtodos de acceso pblicos para forzar al acceso a las variables por medio de
dichos mtodos en lugar de acceder directamente.

Utilizar las convenciones de cdigo para los nombres de los mtodos, por ejemplo: set y get.

El ejemplo anterior modificado para un buen encapsulamiento quedara as:


public class MiClase {
private int tipo;
public void setTipo(int t) {
tipo = t;
}
public int getTipo() {
return tipo;
}
}
class AccesoIndirecto {
public static void main(String[] args) {

Pgina 10

POO en JAVA NetBeands

MiClase mc = new MiClase();


mc.setTipo(5);
System.out.println("El tipo es:" + mc.getTipo());
}
}

Actividad 01:
Desarrollar una aplicacin donde se registre los datos de un automvil (cdigo, marca, modelo, categora,
precio, descuento), si el automvil tiene la categora A su descuento ser del 12%, si es B ser el 8% y si
es C solo el 4%. Calcular el precio de venta del automvil ingresando todos los datos excepto el descuento.
CONTROL DE ACCESIBILIDAD DE UNA CLASE:

Una sola clase pblica por archivo.

El nombre del archivo debe ser el nombre de la clase pblica, ms la extensin .java.

El resto de las clases del archivo solo es accesible en el mismo paquete

CLASE QUE CONTIENE OTRA CLASE (CLASES CONTENEDORAS)


Java es un lenguaje orientado a objetos y nos da la posibilidad de definir clases que contenga objetos de
otras clases esto permite que se pueda reutilizar el cdigo adems hace que las aplicaciones ser ms
confiables y tambin el mantenimiento sea ms sencillo.

Ejemplo

Disear una clase alumno, que tiene por atributo el nmero de orden, edad y como Mtodos
o

Registrar: registrar el nmero de orden y su respectiva edad

Consultar: muestra los dados ingresado como N de orden y Edad

Luego disear una clase Curso que contenga tres alumnos a esto se denomina que tenga que tenga tres
objetos de la clase alumno
Pgina 11

POO en JAVA NetBeands

Se tiene que considerar que se tiene que registrar a los tres alumnos.
class alumno{
private int nro;
private int edad;
private string nombre;
public void registrar(int n_nro, int n_edad, string c_nombre )
{
nro = n_nro;
edad = n_edad;
nombre = c_nombre;
}
public void consultar()
{
System.out.println("Nro. del Alumno: " + nro + Nombre: + nombre);
System.out.println("Edad: " + edad);
}
}
class curso {
private alumno a1 =new alumno();
private alumno a2 =new alumno();
private alumno a3 =new alumno();
public void registrar(int n1,int n2, int n3, int ed1,int ed2,int ed3,string nm1,string nm2,string
nm3 )
{
a1.registrar(n1,ed1,nm1);
a2.registrar(n2,ed2,nm2);
a3.registrar(n3,ed3,nm3);
}
public void consultar()
{
a1.consultar();
a2.consultar();
a3.consultar();
}
}
public class ClasesContenedoras
{
public static void main(String[] args)
Pgina 12

POO en JAVA NetBeands

{
curso c1 = new curso();
c1.registrar(1,2,3,20,22,23,juan,pedro,luis);
System.out.println("Consulta de Datos Registrados");
System.out.println("-----------------------------");
c1.consultar();
}
}
Ejercicios:
1. Disear una clase docente con cdigo, nombre, categoria y sueldo como atributos. Implemente los
mtodos:
o

registrar() - permite registrar los datos del docente.

consultar() - muestra los datos del docente. , se debe ingresar tres docentes con sus respectivos
atributos.

Si la categora es de tipo T el sueldo puede superar de los 3000 soles de lo contrario el sueldo debe
ser menor.

2. Disee un programa para la clase empleado con sus atributos de apellido, nombre, direccin, telfono,
con los siguientes mtodos: de registrar y mostrar, registrar registra a todo los atributos respectivamente,
y mostrar sus atributos.
3. Disear una clase producto, con atributo de codigo, nombre, precio, cantidad como datos de mtodos
de que incluya:
o

Registrar() - que permite registrar los datos del producto.

retValor() - retorma el valor en precio de todos los producto (valor en soles en todo los productos):

Luego disee una clase sucursal que contenga los objetos de la clase producto como datos miembros que
incluya las funciones para 2 productos:
o

Registrar (.) permite registrar los datos de los dos productos.

Valor () retorna el valor de todo los productos en la sucursal.

4. Disee una clase Asignatura con cdigo, nombre y horas como atributos e incluya los mtodos.
o

Registrar() que permite registrar los datos de la asignatura.

Consultar() muestra los datos de la asignatura.

RetHoras () devuelve las horas de la asignatura.

Luego disee la clase Especialidad que contenga tres objetos de la clase asignatura e incluya las los
mtodos
o

Registrar() que permite registrar los datos de las asignaturas.

MayorHoras() muestra los datos de la asignatura con mayor cantidad de horas.

Pgina 13

POO en JAVA NetBeands

Constructores
Todas las clases Java tienen mtodos especiales llamados Constructores que se utilizan para inicializar un
objeto nuevo de ese tipo. Los constructores tienen el mismo nombre que la clase:

Class: Docente Constructor: Docente


Java soporta la sobrecarga de los nombres de mtodos, por lo que una clase puede tener cualquier nmero
de constructores, todos los cuales tienen el mismo nombre. Al igual que otros mtodos sobrecargados, los
constructores se diferencian unos de otros en el nmero y tipo de sus argumentos.
public class Docente{
// Constructor con tres parmeteros
// Constructor con cero parmetros
public Date(String xN, int xE, String xDni){
public Date(){
nombre = xN;
nombre = Juan;
edad = xE;
edad = 30;
DNI= xDNI;
DNI= 45127845;
}
}
Ejemplo01: Calcular el rea de un rectngulo.
public class Rectangulo {
private float x1,y1,x2,y2;
public Rectangulo(float ex1, float ey1, float ex2, float ey2) {
this.x1 = ex1;
this.x2 = ex2;
this.y1 = ey1;
this.y2 = ey2;
}
public float calcularArea() {
return (x2-x1) * (y2-y1);
}
}
public class Programa1{
public static void main(String[] args) {
Rectangulo prueba = new Rectangulo(1,4,7,6);
System.out.println(prueba.calcularArea());
}
}

Ejemplo02: Disear la clase empresa productora con: ruc, nombre y produccin total, con los mtodos de
mostrar datos (Consultar) y mostrara la produccin total que realiza dicha empresa:
A continuacin disea la clase Industria que contenga el Ruc, Nombre, produccin de una empresa y las
funciones respectivamente, tambin debe tener un constructor.
public class Empresa {
private int Ruc;
private String Nombre;
private float Prod;
public Empresa(int Ruc, String Nombre, float Prod){

Pgina 14

POO en JAVA NetBeands

this.Ruc = Ruc;
this.Nombre = Nombre;
this.Prod = Prod;
}
public float retprod(){
return Prod;
}
public String consultar(){
return "Ruc" + Ruc +"Nombre: " + Nombre + " Produccin: " + Prod + "\n";
}
}
public class Industria{
private String NombreIndustria;
private Empresa emp1;
public Industria(String Nombre, int Ruc1, String Nombre1, float Prod1){
this.NombreIndustria=Nombre;
emp1=new Empresa(Ruc1, Nombre1, Prod1);
}
public String consultar(){
String Datos;
Datos = emp1.consultar();
return " los datos de la Empresa es "+Datos;
}
public String totprod(){
double total=0;
total = emp1.retprod();
return "Produccin de la industria: " + total;
}
}
public class Principal {
public static void main(String[] args) {
Industria ind = new Industria ("calzados", 131324254, "Rojas", 255444f);
System.out.println(ind.consultar() + ind.totprod());
}
}

Pgina 15

POO en JAVA NetBeands

POLIMORFISMO (SOBRECARGA DE FUNCIONES)


Java soporta la sobrecarga de funciones, esto es, distintas funciones que comparten el mismo nombre,
pero con diferentes comportamientos segn los parmetros de entrada.

Ejemplo 03: Mostrar los diferentes valores segn el tipo de dato ingresado.
public class miclase {
public void escribe(int i) {
System.out.println("LLamada con entero");
}
public void escribe(float i) {
System.out.println("LLamada con float");
}
public void escribe(double i) {
System.out.println("LLamada con double");
}
}
public class ejemplo03 {
public static void main(String arg[]){
miclase mclase;
mclase = new miclase();
mclase.escribe(1);
mclase.escribe(1.0F);
mclase.escribe(1.0);
}
}

Ejemplo 04: Se Tiene una clase producto con cdigo y descripcin como datos miembros o atributos y
contenga los mtodos:

Pgina 16

POO en JAVA NetBeands

Registrar () que permita registrar los datos


Consultar () que visualice los datos del producto.
import java.io.*;
class leer {
public static String lectura(){
String teclado="";
try {
InputStreamReader leer =new InputStreamReader(System.in);
BufferedReader bufer=new BufferedReader(leer);
teclado=bufer.readLine();
}
catch(IOException e){ }
return vdato;
}
}
class producto {
private int codigo;
private String descrip;
public void registrar() {
System.out.print("Ingrese Codigo:");
codigo=Integer.parseInt(leer.lectura());
System.out.print("Ingrese Descrip.:");
descrip=leer.lectura();
}
public void registrar(int n_codigo, String n_descrip) {
codigo = n_codigo;
descrip = n_descrip;
}
public void consultar() {
System.out.println("Codigo:" + codigo);
System.out.println("Descrip.:" + descrip+ "\n");
}
}
public class proprincipal {
public static void main(String args[]) {
producto prod1 = new producto();
producto prod2 = new producto();

// Dos formas de registrar los datos


prod1.registrar();
prod2.registrar(2,"Cuaderno 100 hojas");
System.out.println("\nConsulta de Datos");
System.out.println("-----------------");
prod1.consultar();
prod2.consultar();

Pgina 17

POO en JAVA NetBeands

Actividad: Realizar un programa que permita implementar el costo de alquiler de automviles, si es gasolinera
se calcula de los das de alquiler por km, si es a gas se calcula el km inicial el kilometraje final * pago
actual, si es elctrico solo se necesita el pago de 100 soles por 2 das.
HERENCIA
La herencia bsicamente consiste en que una clase puede heredar sus variables y mtodos a varias subclases
(la clase que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los
atributos y mtodos propios, tiene incorporados los
atributos y mtodos heredados de la superclase. De

esta

manera se crea una jerarqua de herencia.

Ejemplo
El mecanismo de herencia permite definir nuevas
clases partiendo de otras ya existentes. De este modo, se consiguen reflejar todos los niveles de
generalizacin que se deseen.

La orientacin a objetos de Java, y en particular la caracterstica de herencia, nos permite definir nuevas
clases derivadas a partir de otra ya existente, que la especializan de alguna manera, extendindola. As
logramos definir una jerarqua

Pgina 18

POO en JAVA NetBeands

Para indicar que una clase deriva de otra, heredando sus propiedades (mtodos y atributos), se usa el
trmino extends, como en el siguiente ejemplo:
public class Hombre extends Persona {
public CrearEsperma() { <implementacin>}
}
Una clase derivada de otra se denomina subclase, mientras que la clase de la cual procede recibe el nombre
de superclase. En el ejemplo anterior, la superclase sera Persona, y la subclase, Hombre, Mujer.

En todo lenguaje orientado a objetos existe una jerarqua de clases relacionadas en base a trminos de
herencia. En Java, el punto ms alto de la jerarqua es la clase Object de la cual derivan en ltima instancia
todas las dems clases. Esta clase aporta una serie de funciones bsicas comunes a todas las clases. Si al
definir una nueva clase, no aparece la clasula extends, Java considera que dicha clase desciende
directamente de Object.
En la orientacin a objetos, se consideran dos tipos de HERENCIA, SIMPLE Y MLTIPLE.

En el caso de la primera, una clase slo puede derivar de una nica superclase.

Para el segundo tipo, una clase puede descender de varias superclases.

Pgina 19

POO en JAVA NetBeands

En Java slo se dispone de herencia simple, en aras de una mayor sencillez del lenguaje, si bien se
compensa de cierta manera la inexistencia de herencia mltiple con unas clases especiales
denominadas interfaces.

Ejemplo 05: Desarrolle un programa para la clase Persona que ser sper clase(Padre) y Empleado sub
clase(Hijo).
public class Persona {
private String ID;
private String Nombre;
private String Telefono;
public Persona(String xID, String xNombre, String xTelefono) {
this.ID=xID;
this.Nombre=xNombre;
this.Telefono=xTelefono;
}
public Persona(String xNombre, String xTelefono) {
this.ID="Fernando"; //Se autogenera
this.Nombre=xNombre;
this.Telefono = xTelefono;
}
public String Imprimir(){
return ID + "\t" + this.Nombre + "\t" + this.Telefono;
}
}
public class Empleado extends Persona{
private String Area;
public Cliente(String xID, String xNombre, String xFono, String xArea) {
super(xID, xNombre, xTelefono);
this.Area=xArea;
}
public String Imprimir(){
return super.Imprimir() + "\t" + this.Area;
}
}
public class Prueba {
public static void main(String[] args) {
Persona p = new Persona("1", "Miguel","212121");
Persona amigo = new Persona("Pepe", "234920");
Pgina 20

POO en JAVA NetBeands

Empleado e1 = new Empleado("2", "Luis", "242425","Sistemas");


System.out.println(p.Imprimir());
System.out.println(e1.Imprimir());
}
}
Ejercicios
1. Desarrollar un programa para la superclase rectngulo y la sub clase cuadrado y hallar su rea.
2. Desarrolle un programa para la Superclase Figura, y la sub clase circulo triangulo y rectngulo.
3. Disear una clase cliente con cdigo, nombre como datos miembros. Incluya las funciones.
. registrar( ...) registra los datos del cliente.
.consultar( ) muestra los datos del cliente.
A partir de la clase anterior derive la clase cliente_contado y cliente_credito. El primero de ellos cuenta con
cantidad de ventas comodato miembro adicional mientras que al calse cliente_credito cuenta con deuda
como dato miembr0 adicional. Incluya en ambas clases las funciones miembros:
. registrar( ) registra los datos de la clase correspondiente.
. consultar( ) muestra los datos de la clase.
4. Disear una clase cuenta con cdigo y saldo como datos miembro. Incluya las funciones
miembro:
. registrar(...): registra los datos de la cuenta.
.retSaldo( ): retorna el saldo de la cuenta.
A partir de la clase anterior derive la clase cuenta_ahorro y la clase cuenta_plazo. En la primera de ellas
agregar inters y das como datos miembro. En la clase cuenta_plazo agregue plazo y saldo_total como datos
miembro. En ambas clases derivadas Incluya las funciones:
.registrar(...): registra los todos los datos de la clase.
.consultar( ): visualiza todos los datos de la clase.

Pgina 21

You might also like