You are on page 1of 31

JAVA

Captulo

Programacin Orientada a Objetos


Contenido: 2.1. Introduccin 2.2. Definicin de clase 2.3. Creacin de una clase en java 2.4. Definicin Objeto 2.5. Declaracin de objetos 2.6. Asignacin de objetos 2.7. Atributos 2.8. Mtodos 2.9. Paquetes 2.10. Ocultamiento de datos. 2.11. Sobrecarga 2.12. Constructores 2.13. Constructores con parmetros 2.14. Sobrecarga de Constructores 2.15. Ejercicios

Enestecaptuloaprenderemoselparadigmaorientado a Objetos, describiremos cules son las principales caractersticas de este paradigma, y veremos cmo se implementa en Java la teora de objetos, y como se organizaJavaelconjuntodeobjetos.

A AlgoritmosyEstructurade eDatos
www.zo onajava.net

2.1.

Introducc cin
En este c captulo se examinan los concepto de clase y objeto os es os, 1 como java es un leng a guaje orienta a objetos puro, todo es una clas Pgina | 21 ado o se o bien forma parte de una clase, lo ms tedio f e oso para lo os programa adores que ya tienen experiencia en algn lenguaje e a es, quizs, conocer toda las clase del rbol de Java, pero una ve as es l p ez entendido como est construido el rbol es mucho ms fcil incor s rporar nueva as clases ya implementad a nuestr aplicacio i das ras ones.

2.2.

Definicin de Clase e
Una clase es como un plantilla d la cual se pueden cre varios ob na de e ear bjetos con la as mismas ca aractersticas y funciones. s Una cla es un mo ase odelo(diseo ) de objeto o o Define los atributos y operacion del objeto s nes La clase usan el en e ncapsulamie ento para forz la abstra zar accin

Una clase es una repr resentacin d un objeto en particular, y define un nuevo tip de o po de dato. Las clases de utilizan para crear objetos de ese tipo de clase e r en particular.

Ing. RalEn nriqueFernn ndezBejarano

Unive ersidadPerua anaLosAnde es


www.zo onajava.net

Pgina |

22 2

Eje emplo de una clase en not a tacin UML

El nomb de toda cla debe com bre ase menzar con m maysculas El nomb de los obje bre etos con min sculas

2.3.

Creacin de una cla en java n ase a


Para crear una clase se utiliza la palabra reservada class y a e a a continuacin el nombre de la clase La definic c n e e. cin de la c clase se pon ne entre las llav de aper e ves rtura y cierre El nombre de la clase empieza co e. e e on una letra mayscula. m

Sintaxis: TipodeaccesoclassNombreClase e{ Va ariable1; Va ariable2; // . Mtodo(listad M deparmetro os){ Cuerpode elmtodo } //m mtodos adicionales }

Ejemplo 1: ass Emple eado { cla Cuerpo de la cla ase }

Ing.R RalEnriqueFernndezBe ejarano

A AlgoritmosyEstructurade eDatos
www.zo onajava.net

2.4.

Definicin Objeto
Objeto es una instanci de la clase, los objeto tienen las siguientes cualidades: ia os c Ide entidad: los objetos se d distinguen de uno del ot el tro. Co omportamien nto: pueden realizar tar n reas. Est tado: almac cena informa acin que va a travs del tiempo). aria .
Pgina |

23 3

Represent tacin en UM de esta c ML clase de obje etos

Automvil puede ser un subconjunto o una especializa acin de otr objeto m ro s genrico, t como Veh tal hculo.

2.5.

Declaracin de obje etos


Para crear un objeto o una instancia de esta clase tene r a emos dos alternativas, la a primera en la misma l n nea de declaracin, tal como se ilus a contin stra nuacin.

Sintaxis 1: Nombre eClaseNomb breVariable; Nombre eVariable=n newNombreC Clase();

2: Sintaxis 2 Nombre eClaseNomb breVariable= =newNombr reClase();

Ing. RalEn nriqueFernn ndezBejarano

UniversidadPeruanaLosAndes
www.zonajava.net

Ejemplo 2: El objeto Vehiculo implementado en Java, sera el siguiente. class Vehiculo { Color color; float velocidad; Motor motor; String marca; int numero_ruedas; Automovil() { color = Color.red; velocidad = 0.0; motor = new Motor(); marca = new String(Chevrolet); } Automovil(Color c, float v, Motor m, String t) { color = c; velocidad = v; motor = m; marca = t; } void avanzar() {...} void parar() {...} void girarIzquierda() {...} void girarDerecha() {...} float getVelocidad() { return velocidad; } }

Pgina |

24

Ejemplo 3: El objeto Vehiculo implementado en Java, sera el siguiente. Empleado A1= new Empleado();

Ing.RalEnriqueFernndezBejarano

A AlgoritmosyEstructurade eDatos
www.zo onajava.net

Pgina |

25 5

2.6.

Asignacin de obje etos


Cuando creamos un obj jeto internam mente existe un punter al que n e ro, no te enemos acc ceso, pero cuando asignamos ob bjetos lo qu realmente ue es stamos asig gnando son las direc n cciones de memoria donde est n definidos lo objetos. os

3 Ejemplo 3: Emplea ado A1 = n new Emple eado(); Emplea ado A2 = A A1;

2.7.

Atributos s
Los atributo son las caracterstic os cas individu uales que d diferencian u un objeto de o otro y determ minan su ap pariencia, es stado u otra cualidade as es.

Ing. RalEn nriqueFernn ndezBejarano

UniversidadPeruanaLosAndes
www.zonajava.net

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.
Pgina |

26

Sintaxis: [TipoAcceso]TipoNombre; Ejemplo 7 Disee una clase Empleado; cuyos atributos sean nombre, apellido y edad, con Mtodo u operaciones de registrar y mostrar.

Empleado

public class Empleado { private String nombre; private String apellido; private int edad;

public void registrar( ) { } public void mostrar( ) { } }

Ing.RalEnriqueFernndezBejarano

A AlgoritmosyEstructurade eDatos
www.zo onajava.net

Clase empleado e o.java


cl lass Emple eado { private String No ombre; private String Ap pellido; private int Edad; public v void Registrar(Strin Nombre, String Ap ng pellido, int Edad) { this s.Nombre = Nombre; this s.Apellido= Apellido = o; this s.Edad = Ed dad; } public v void Mostr rar() { Syst tem.out.pri intln("Nom mbre "+ Nom mbre); Syst tem.out.pri intln("Ape ellido"+ Ap pellido); Syst tem.out.pri intln("Eda ad"+ Edad); ; } }

Pgina |

27 7

clase principal.j java


class pr rincipal { pub blic stat tic void m main(Strin ng[ ] arg gs) { Emplea ado A1= ne Emplea ew ado(); A1.Reg gistrar("J Juan","Hu urtado", 2 22); A1.Mos strar(); } } El operado de acceso a un miem or o mbro (.) sele ecciona un m miembro ind dividual de u un objeto de la clase. Analice ah hora Ud. cada lnea del p programa an nterior y mod difique para 5 Empleado os

2.8.

Mtodos Compor rtamiento


El comportam E miento de lo objetos de una clase se impleme os enta mediante funciones m f miembro o mtodos. Un mtod es un conjunto d do de instrucciones que realiz s zan una dete erminada tarea y son similares a la as

Ing. RalEn nriqueFernn ndezBejarano

UniversidadPeruanaLosAndes
www.zonajava.net

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 Pgina | 28 clase. Sintaxis [modificador]tipoNombreMetodo(tipoparm1,tipoparm2,tipoparm3,...){ declaracionesdevariableslocales; 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.java
public class Calculadora { public int n1; public int n2; public int suma(){ return (n1 + n2); }

Ing.RalEnriqueFernndezBejarano

AlgoritmosyEstructuradeDatos
www.zonajava.net

public int producto(){ return (n1 * n2); } }


Pgina |

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

29

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()); } }

Ejemplo 6 En el siguiente ejemplo tenemos una segunda versin de la clase Calculadora donde las operaciones tienen parmetros.

Clase Calculadora.java
class Calculadora { public int suma(int n1, int n2){ return (n1 + n2); }

Ing. RalEnriqueFernndezBejarano

Unive ersidadPerua anaLosAnde es


www.zo onajava.net

public int prod c ducto(int n1, int n2){ t return (n * n2); n1 } }


Pgina |

Para ilustra el uso de la clase Calculadora, se crea el pro ar e ograma aplic cacalcu

30 0

public c class apli icacalcu { pub blic stat tic void m main(Strin ng[ ] arg gs) { Calcul ladora obj = new Calculador j ra(); int a = 15; int b = 8; System m.out.prin ntln("n1 = " +a); System m.out.prin ntln("n2 = " +b); System m.out.prin ntln("Sum = " +ob ma bj.suma(a, ,b)); System m.out.prin ntln("Pro oducto="+o obj.produc cto(a,b)); } }

2.9.

Paquetes s
Un paquet es una agrupacin de clases e in te e nterfaces qu facilitan la gestin del ue a acceso a la clases. C as Como se ver a continua acin, los paquetes perm miten protege er clases rest tringiendo qu clases pu ueden acced a qu cla der ases, y perm definir un mite espacio de nombres mediante el c e m cual se pued organiza y localizar las ciases. den ar r

2.9.1. Cla ases Pblicas


Cuan no se d ndo define una clase como p publica, se establece un e na restr riccin importante y es que slo po odr ser util lizada por la as clase en el mis es smo paquete e. La d definicin de una clase puede incluir el modifica p ador publi ic com prefijo en la cabecer de la clase as: mo n ra e publi class e ic examen { //atributos de la clase / a }

Ing.R RalEnriqueFernndezBe ejarano

A AlgoritmosyEstructurade eDatos
www.zo onajava.net

La clase Exam men se pued utilizar e las clases de su prop paquete y de en s pio en las clases d cualquier otro paquete de e. Habitualmente las clases se define como p s en public para as poder utilizarlas en cu ualquier programa a no ser que se quiera restr ringir su uso a Pgina | 31 1 las clases del paquete. p

2.9.2. Sentencia pa ackage


A lo largo de to odos los ejem mplos y problemas de e este curso s se han utilizado paq quetes. Por ejemplo, cuando se utiliza System m.

out t.println "Hola mundo!!!"; se est utilizando la n clase System, que se encu e uentra en el paquete ja ava.lang.
Sin embargo, para utiliza la clase System, no se debe hacer nad n ar e da esp pecial; simpl lemente utili izar la clase Esto se de a que por defecto, la e. ebe p m quina virtua Java carga o importa tres paque al a etes, debido a que el us so de las clases de estos pa aquetes es muy frecuente. Estos t tres paquete es son n:

java.lang.
El paqu uete actual, Es decir, e paquete a que pertenece la clas el al se que se est definiendo. El paq quete por defecto, El paq quete que no tiene ning nombre. o n

En esta secci se aborda cmo a n ar adir una cla a un paq ase quete, para lo cua basta con aadir la se al entencia pac ckage. Sin ntaxis:

packa age

Nomb breDelPaq quete;

Un paquete es formado por todas las clases q st que tienen esta sentenc e cia en el inicio de fichero, d el donde estn definidas. La sentenc packag n cia ge deb incluirse como la prim be mera lnea del cdigo, a d antes inclus de importar so otra clases me as ediante la se entencia imp port.

Ing. RalEn nriqueFernn ndezBejarano

Unive ersidadPerua anaLosAnde es


www.zo onajava.net

2.9.3. Sentencia im mport


Los paquetes pu ueden considerarse com bibliotec de clase mo cas es. El acceso a las clases de un paquete que nos in s e nteresen para nues program se puede hacer de va stro ma arias formas: Pgina | 32 2 Usando todo el o nuevaF Fecha; nombre de la cla ase: java a.util.Dat te

Importa ando la clase import e:

java.util.Date; jav va.util.* *;

Importa ando todo el paquete: im mport

Ac continuacin se present tres ejem n tan mplos en los que se hac uso de la s ce as dist tintas formas de accede a las clase de un paq er es quete.

Eje emplo 01: Esc criba un pro ograma que cree un obj jeto de la clase Random del paque m ete jav va.util, g genere un n nmero ente aleatoria ero amente y lo imprima e o en pan ntalla. Para acceder a la clase, u utilice el no ombre de la clase y d a del paq quete.

Cla AccesoP ase Paquete1.j java


pub blic class AccesoP Paquete1 { public static v c void main (String[ args) { n [] // Se crea el o objeto java.util l.Random g generaNum meros = ne ew ja ava.util.Random(); ; // Se genera e imprime el nmero System.ou ut.println n(generaNumeros.ne extInt()); ; } }

Eje emplo 02: Esc criba un pro ograma que cree un obj jeto de la clase Random del paque m ete jav va.util, g genere un n nmero ente aleatoria ero amente y lo imprima e o en pan ntalla. Para acceder a la clase, importe el paquete in ndicando qu ue sola amente desea importar la clase Ran ndom.

Ing.R RalEnriqueFernndezBe ejarano

AlgoritmosyEstructuradeDatos
www.zonajava.net

Clase AccesoPaquete2.java
import java.util.Random; public class AccesoPaquete2 { public static void main (String[] args) { // Se crea el objeto Random generaNumeros = new Random(); // Se genera e imprime el nmero System.out.println(generaNumeros.nextInt()); } }
Pgina |

33

Ejemplo 03: Escriba un programa que cree un objeto de la clase Random del paquete java.util, genere un nmero entero aleatoriamente y lo imprima en pantalla. Para acceder a la clase, importe todo el paquete java.util.

Clase AccesoPaquete3.java
import java.util.*; public class AccesoPaquete3 { public static void main (String[] args){ // Se crea el objeto Random generaNumeros = new Random(); // Se genera e imprime el nmero System.out.println(generaNumeros.nextInt()); } } Como se puede apreciar est forma de importar clases de un paquete es una ampliacin de la vista en el ejemplo anterior. Las dos ltimas formas tienen la ventaja de que no hace falta escribir todo el paquete cuando se declara o se crea un objeto de una clase. Sin embargo, tiene el inconveniente de que pueden darse problemas de ocultacin si se importan varios paquetes donde existen clases con el mismo nombre. Si se quisiera utilizar dos clases con el mismo nombre de distintos paquetes, se debern referenciar los nombres completos de las clases para evitar problemas. Tambin podra importarse la clase que se utilizase ms y utilizar el nombre completo para la otra clase.

Ing. RalEnriqueFernndezBejarano

Unive ersidadPerua anaLosAnde es


www.zo onajava.net

2.10. Ocultami iento de Da atos


Uno de los fundamentos de la programacin orientada a objetos e s n es que el usu uario solo d debe tener acceso a lo datos qu son de s a os ue su inters y del modo que le corresp e ponde, por e ejemplo solo lectura, so o olo escritura o ambos. Pgina | 34 4 Para conseguir esto se debe implementar los atributos c s s como privad y se deb dos be implement mtodos para acces a ellos, e tar so existe un es stndar para definir es a ste mtodo. Por ejemplo; si el atrib buto es apell lido los mtodos serian: set tapellido o get tapellido o est mtodo per rmite asigna un valor al atributo. ar l este mtodo per rmite leer el valor del atr ributo.

Como puede apreciar existen dos prefijos, el prefijo set q se utiliza para asignar que a un valor al atributo y e prefijo ge para leer el valor del atributo, de esta manera el et e podemos seleccionar si se implem s menta el mtodo set, ge o ambos, y restringir el et, novel de acceso nivel de acceso a los datos. Otra posib bilidad que nos da la implementa acin de estos mtodos es agregar funcionalid que pue servir pa verificar por ejemplo si el -2 se e dad ede ara esta signand do es correcto o no. o

Ejemplo 07: 0
Realizar un programa que ilustra e uso de m n el todos para acceder a lo campos d os de un objeto.

Clase Articulo en no otacin UML L

Ing.R RalEnriqueFernndezBe ejarano

AlgoritmosyEstructuradeDatos
www.zonajava.net

Clase Articulo.java
public class Articulo { private private private private int codigo; String nombre; double preCosto; double preVenta;

Pgina |

35

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(){ return preCosto; } public double getPreVenta(){ return preVenta; } }

Clase progprincipal.java
public class progprincipal { public static void main(String[ ] args) { Articulo art1 = new Articulo(); art1.setCodigo( 1000 ); art1.setNombre( "Auto" ); art1.setPreCosto( 15000 );

Ing. RalEnriqueFernndezBejarano

UniversidadPeruanaLosAndes
www.zonajava.net

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());

} }

Pgina |

36

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.

2.11. Sobrecarga
La sobrecarga permite definir dos ms mtodos que comparten el nombre, pero la declaracin de sus parmetros debe ser diferente. Esta una de las caractersticas muy importante de la POO, y por lo tanto tambin de Java. 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 08:
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

Ing.RalEnriqueFernndezBejarano

AlgoritmosyEstructuradeDatos
www.zonajava.net

La clase que se utilizara para esta demostracin es miconvertidor, tal como se aprecia en la figura, tenemos el mtodo convert sobrecargado.

Clase miconvertidor.java
class miconvertidor { public String convert(int n){ return (Integer.toString(n)); } public String conver(long n){ return (Long.toString(n)); } 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:
Pgina |

37

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

System.out.println("n1 System.out.println("n2 System.out.println("n3 System.out.println("n4 } }

Ing. RalEnriqueFernndezBejarano

UniversidadPeruanaLosAndes
www.zonajava.net

2.12. 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 Pgina | 38 mtodos. Sintaxis

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

nombre_clasenombre_variable; nombre_variable=newnombre_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 09:
En este ejemplo crearemos una clase de nombre empleado, que tiene un constructor que inicializa sus atributos

Clase Empleado con un Constructor

Ing.RalEnriqueFernndezBejarano

AlgoritmosyEstructuradeDatos
www.zonajava.net

Clase Empleado.java
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 |

39

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.java
public class aplicaempleado { public static void main(String[] args) { Empleado E1 = new Empleado( ); System.out.println( "Nombre = "+ E1.getNombre()); System.out.println( "Sueldo = "+ E1.getSueldo()); System.out.println( "Edad = "+ E1.getEdad()); } }

Ing. RalEnriqueFernndezBejarano

UniversidadPeruanaLosAndes
www.zonajava.net

2.13. 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 Pgina | 40 siguiente ilustra el uso de constructores con parmetros.

Ejemplo 10:
El siguiente ejemplo ilustra el uso de constructores con parmetros la clse utilizada es Empleado1.

Clase Empleado1 con un constructor con parmetros

Clase Empleado1.java
class Empleado1 { 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; } public String getNombre() { return this.nombre; }

Ing.RalEnriqueFernndezBejarano

AlgoritmosyEstructuradeDatos
www.zonajava.net public double getSueldo() { return this.sueldo; } public int getEdad(){ return this.edad; } }

Pgina |

41

El constructor de esta clase permite inicializar los objetos con diferentes datos, as podemos tener un objeto para empleado. El programa que ilustra el uso de esta clase es el siguiente:

Clase aplicaempleado1.java
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.

2.14. 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 11:
En este ejemplo se ilustra cmo construir clases con constructores sobrecargados la clase que se utiliza es Empleado2, en esta clase tenemos cuatro versiones del constructor, tal como se aprecia en la Figura.

Ing. RalEnriqueFernndezBejarano

UniversidadPeruanaLosAndes
www.zonajava.net

Pgina |

42

Clase Empleado2 con constructor sobrecargado

Los datos de un empleado son: nombre, sueldo y edad, cuando falta el sueldo se asume un sueldo base que est definido en SUELDO_BASE y cuando falta la edad se asume cero.

Clase Empleado2.java
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; this.edad = edad; } public Empleado2(String nombre, double sueldo){ this( nombre, sueldo, 0 ); } public Empleado2(String nombre, int edad){ this( nombre, SUELDO_BASE, edad ); }

Ing.RalEnriqueFernndezBejarano

AlgoritmosyEstructuradeDatos
www.zonajava.net

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

Pgina |

43

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

Clase aplicaempleado2.java
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 System.out.println( "Nombre = System.out.println( "Sueldo = System.out.println( "Edad = System.out.println(); System.out.println( "Empleado System.out.println( "Nombre = System.out.println( "Sueldo = System.out.println( "Edad = System.out.println(); System.out.println( "Empleado System.out.println( "Nombre = System.out.println( "Sueldo = System.out.println( "Edad = System.out.println(); } } 1" ); " + emp1.getNombre()); " + emp1.getSueldo()); " + emp1.getEdad());

2" ); " + emp2.getNombre()); " + emp2.getSueldo()); " + emp2.getEdad());

3" ); " + emp3.getNombre()); " + emp3.getSueldo()); " + emp3.getEdad());

Ing. RalEnriqueFernndezBejarano

UniversidadPeruanaLosAndes
www.zonajava.net

Del resultado obtenido podemos deducir que a Ricardoseleasignoelsueldobase debido que no se le especifico su sueldo al momento de crear el objeto, en el caso de Sergiosoloseespecificosunombre, por lo tanto se le asignoelsueldo

baseyedadcero.
Pgina |

44

2.15. Ejercicios Propuestos


1. Escribir una aplicacin que modifique la clase Calculadora, para que aumente los mtodos sin utilizar parmetros siguientes: resta( ) halla la sustraccin de los dos nmeros ingresados divisin ( ) halla la divisin de los dos nmeros ingresados. absoluto ( ) halla el valor absoluto de uno de los nmeros ingresados. mayor ( ) menor ( ) seno ( ) coseno ( ) halla el mayor de los dos nmeros ingresados. halla el mayor de los dos nmeros ingresados. halla el seno de uno de los nmeros ingresados halla el coseno de uno de los nmeros ingresados

tangente ( ) halla el tangente de uno de los nmeros ingresados logaritmo ( ) halla el logaritmo de uno de los nmeros ingresados potencia ( ) halla la potencia de uno de los nmeros ingresados, utilizando ambos nmeros.

razcuadrada( ) halla la raz cuadrada de un nmeros Para resolver, no utilizar la clase Math de Java. 2. Escribir una aplicacin que modifique la clase Calculadora, para que aumente los mtodos utilizando parmetros siguientes: resta( ) divisin ( ) mayor ( ) menor ( ) seno ( ) coseno ( ) halla la sustraccin de los dos nmeros ingresados halla la divisin de los dos nmeros ingresados. halla el mayor de los dos nmeros ingresados. halla el mayor de los dos nmeros ingresados. halla el seno de uno de los nmeros ingresados halla el coseno de uno de los nmeros ingresados

absoluto ( ) halla el valor absoluto de uno de los nmeros ingresados.

tangente ( ) halla el tangente de uno de los nmeros ingresados logaritmo ( ) halla el logaritmo de uno de los nmeros ingresados potencia ( ) halla la potencia de uno de los nmeros ingresados, utilizando ambos nmeros. razcuadrada( ) halla la raz cuadrada de un nmeros

Ing.RalEnriqueFernndezBejarano

AlgoritmosyEstructuradeDatos
www.zonajava.net

Para resolver, no utilizar la clase Math de Java. 3. Defina la clase Alumno, que permita almacenar los datos personales y cinco notas de un alumno, adems debe contener mtodos que permita obtener la menor nota obtenida as como el promedio final sin considerar la menor nota, una observacin si el alumno aprob o no la Pgina | 45 asignatura. Escribir una aplicacin cree una instancia de la clase Alumno, utilice la Leer, para ingresar datos, utilice paquetes y ocultamiento de informacin para resolver este ejercicio. 4. Defina la clase Libro, que permita almacenar los datos de los libros de una biblioteca. Escribir la aplicacin que cree la instancia de la clase Libro, utilice la clase Leer, para ingresar los datos, haga uso de paquetes y ocultamiento de informacin para resolver este ejercicio. 5. Defina la clase Circulo, que permita obtener el rea y la longitud de un circulo. Escribir una aplicacin que cree una instancia de la clase Circulo, utilice la clase Leer, para ingresar el radios del circulo. Utilice constructores y ocultamiento de informacin para resolver este ejercicio. 6. Defina la clase Rectangulo, que permita calcular el rea de un rectngulo, la clase tiene cuatro atributos que indican las coordenadas de los vrtices. La clase debe tener dos mtodos constructores, uno que contenga cuatro parmetros y el segundo constructor sin parmetros, inicialice los argumentos con los valores; 1, 2, 1 y 4 respectivamente. Escribir una aplicacin que cree una instancia de la clase Rectangulo, utilice la clase Leer, para ingresar los cuatros argumentos. 7. Realice el siguiente ejercicio: a) Disee e implemente en Java una clase para trabajar con tringulos issceles. Para ello, defina las variables de ejemplar mnimas que requiera, proporcione mtodos de consulta, e implemente otros mtodos para calcular el permetro y el rea de un tringulo. b) Implemente en Java un mtodo que a partir de una matriz de tringulos devuelva el rea del tringulo de mayor superficie.

8. El siguiente diagrama de clases, incompleto, representa la estructura bsica de un programa para recopilar los encargos de productos de una compaa.

Ing. RalEnriqueFernndezBejarano

UniversidadPeruanaLosAndes
www.zonajava.net

Pgina |

46

Escriba una versin en Java de la clase Producto. Incluya mtodos que permitan acceder a la informacin del producto. 9. Cul es el resultado del siguiente programa?
class Ejercicio { public static void main(String [ ] args){ Clase1 obj1=new Clase1(); obj1.imprimir(24.3,5); } } class Clase1 { private double valor=9.8; private int x=7; public void imprimir(double valor, int x) { System.out.print(valor+ +this.x); } }

10. Qu imprime el siguiente programa?


class Ejercicio { public static void main (String [] args) { Clase1 obj1 = new Clase1(5,4); System.out.print(obj1.modificar(4)+" "); Clase1 obj2 = new Clase1(5,4); System.out.print(obj2.modificar(5)+" "); obj2 = obj1; System.out.println(obj2.modificar(5)+" "); } }

Ing.RalEnriqueFernndezBejarano

AlgoritmosyEstructuradeDatos
www.zonajava.net class Clase1{ int p1,p2; public Clase1 (int i, int j){ p1=i; p2=j; } public int modificar(int i){ p1=p1+i; p2=p2+i; System.out.print(p2+" "); return p1; } }

Pgina |

47

11. Desarrolle un programa que sirva para evaluar el valor de un polinomio, cuyo grado y coeficientes se introducen por teclado, en un valor de abscisa determinado. 12. Cul es el error del siguiente programa?
class Cuenta { protected int numero_cuenta; protected double saldo; public Cuenta(int cuenta, double inicial) { numero_cuenta=cuenta; saldo = inicial; }

public void depositar(double cantidad) { saldo = saldo + cantidad; } public double saldo(){ return saldo; } } class Banco { public static void main(String [] args) { Cuenta cuenta_1 = new Cuenta(123456, 2505.32); double total_cuenta = cuenta_1.saldo; System.out.println(Total actual en la cuenta: +total_cuenta + Euros); } }

Ing. RalEnriqueFernndezBejarano

UniversidadPeruanaLosAndes
www.zonajava.net

13. Un teatro se caracteriza por su nombre y su direccin y en l se realizan 4 funciones al da. Cada funcin tiene un nombre y un precio. Realice el diseo de clases e indique qu mtodos tendra cada clase, teniendo en cuenta que se pueda cambiar el nombre del teatro y el nombre y precio de la funcin. Implemente dichas clases.
Pgina |

14. a) Qu imprime el siguiente programa? b) Y si prop en Clase1 no la declaramos como static?


class Ejercicio { public static void main (String [] args) { Clase1 obj1= new Clase1(7); Clase1 obj2= new Clase1(9); obj2=obj1; System.out.print(obj1.valorprop()+" "); System.out.print(obj2.valorprop()+" "); } } class Clase1{ static int prop=0; public Clase1 (int valor){ prop=valor; } public int valorprop(){ return prop; } }

48

15. Dado el siguiente fragmento de cdigo:


Ordenador sobremesa; Ordenador portatil; sobremesa = new Ordenador(); sobremesa.precio(900); portatil = new Ordenador(); portatil.precio(1100); portatil = sobremesa; sobremesa = null;

Qu afirmacin es cierta? a) b) c) d) Al final tanto el objeto sobremesa como el objeto porttil apuntan a null Al final slo queda un objeto de tipo Ordenador con precio 1100 Al final slo queda un objeto de tipo Ordenador con precio 900 Al final hay dos objetos de tipo Ordenador, uno con precio 900 y otro con precio 1100

16. Qu imprime el siguiente programa?


class Principal { public static void main(String[] args) { Autor autor = new Autor ("Paul", "Auster");

Ing.RalEnriqueFernndezBejarano

AlgoritmosyEstructuradeDatos
www.zonajava.net Libro libro = new Libro ("La triloga de Nueva York", autor); System.out.println (libro.getTitulo()+" de " + (libro.getAutor()).toString()); } } class Libro { private String titulo; private Autor autor; public Libro(String titulo, Autor autor) { this.titulo = titulo; this.autor = autor; } public Autor getAutor() { return autor; } public String getTitulo() { return titulo; } } class Autor { private String nombre; private String apellido; public Autor (String nombre, String apellido) { this.nombre = nombre; this.apellido = apellido; } public String toString () { return nombre+ " " +apellido; } }
Pgina |

49

17. Qu imprime el siguiente programa?


class Alumno { String nombre = "Alumno 1"; char grupo = 'A'; char devolvergrupo() { return grupo; } void cambiargrupo(char nuevogrupo) { grupo = nuevogrupo; } void imprimir() { System.out.println("Nombre: " + nombre); System.out.println("Grupo: " + devolvergrupo());

Ing. RalEnriqueFernndezBejarano

UniversidadPeruanaLosAndes
www.zonajava.net } } class Principal { public static void main (String[] args) { Alumno a1 = new Alumno(); System.out.println("Objeto a1:\n-----------\n"); a1.imprimir(); System.out.println("\nLlamada al metodo prueba1(a1).\n"); prueba1(a1); a1.imprimir(); System.out.println(" "); Alumno a2 = new Alumno(); System.out.println("\nObjeto a2:\n-----------\n"); a2.imprimir(); System.out.println("\nLlamada al metodo prueba2(a2).\n"); prueba2(a2); System.out.println("\nEn main: Fuera ya del metodo prueba2. \n"); a2.imprimir(); } static void prueba1(Alumno b) { b.cambiargrupo('B'); } static void prueba2(Alumno b) { b = new Alumno(); b.cambiargrupo('B'); System.out.println("\nDentro del metodo prueba2. \n"); b.imprimir(); } }
Pgina |

50

18. En una tienda cada factura se representa por su nmero y una serie de productos. Cada producto se caracteriza por su cdigo alfanumrico y su precio. Se pide: a) Dibujar el diagrama de clases indicando las relaciones entre las mismas y los miembros que hay en cada una. Debe incluir mtodos para la consulta del nmero de factura y el/los productos de la factura y mtodos para actualizacin de los datos del/los productos. b) Implemente en Java dichas clases c) Implemente un programa principal donde se imprima una factura con los siguientes productos: (cdigo: C1, precio: 24 euros), (cdigo: H23, precio: 234 euros) y (cdigo: M30, precio: 109 euros). A continuacin debe cambiarse el segundo producto de la factura por el siguiente (cdigo: K123, precio:247 euros) y volver a imprimir la factura

Ing.RalEnriqueFernndezBejarano

You might also like