p01d- composicion de objetos en java
TRANSCRIPT
Instituto Tecnológico de la Laguna Ingeniería en Sistemas Computacionales
TOPICOS AVANZADOS DE PROGRAMACION
SEMESTRE: Ene - Jun / 2013 GRUPO: “B” 17 – 18 Hrs UNIDAD: 1 PRACTICA No.: 1d
COMPOSICION DE OBJETOS EN JAVA
ALUMNO:
11130036 Eduardo Díaz Salazar
PROFESOR: Ing. Luis Fernando Gil Vázquez
Torreón, Coah. a 16 de Febrero de 2013
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 2
Ejercicio 1 Desarrollar una clase Java que modele un Cilindro caracterizado por dos bases circulares de radio r y una altura h. La clase debe
proporcionar información de su volumen, el área de su base, su área lateral y su área total. Desarrollar una aplicación de consola
Java que solicite al usuario los datos del Cilindro e imprima la información del mismo.
Ejercicio 2 Desarrollar una clase Java que modele un prisma triangular caracterizado por una base en forma de Triangulo Rectángulo. La
clase debe proporcionar información de su volumen, el área de su base, su área lateral y su área total. Desarrollar una aplicación
de consola Java que solicite al usuario los datos del Prisma Triangular e imprima la información del mismo.
Ejercicio 3 Diseñar una clase Java que modele un prisma recto con base en forma de trapecio isoceles. La clase debe proporcionar
información de su volumen, el área de su base, su área lateral y su área total. Desarrollar una aplicación de consola Java que
solicite al usuario los datos del Prisma Trapezoidal e imprima la información del mismo.
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 3
Análisis Ejercicio 1
Para la solución de este problema se platearan 3 clases de estas tres clases se reutilizara la clase Circulo. La clase Cilindro tendrá
de atributos radio y la altura, un constructor que recibirá de parámetro el radio y la altura del cilindro, utilizara los métodos
volumen() arealateral() y areaTotal() y unos métodos set/get que asigna y regresa el valor al radio. La clase CilindroApp utiliza la
clase Cilindro para mostrar los valores de sus métodos.
Ejercicio 2
En este problema se plantearan 3 clases pero al igual que el ejercicio anterior se reutilizara una clase TrainguloRec. La clase
PrismaTriangular tendrá un constructor que recibirá 3 parámetros, la base, la altura y el ancho del prisma. Proporcionará métodos
para calcular su volumen y áreas-
Ejercicio 3
Reutilizaremos la clase Trapecio para la solución de este problema, pero implementaremos 2 clases más la clase PrismaTrapecio
y PrismaTrapecioApp. La primera tendrá 4 atributos y constructor que recibirá 4 parametros, la base menor, base mayor altura y
ancho del prisma. Proporcionará métodos para calcular el volumen y ares. Se crearan 2 instancias de la Clase Trapecio. En la
clase PrismaTrapecioApp se creara una instancia de la clase PrismaTrapecioApp para calcular su área y volúmenes.
Diseño
Ejercicio 1
CilindroApp
+ Main ( string [] args)
Clindro
- radio : doublé
- altura :doublé
- baseSuperior :Circulo
- baseInferior :Circulo
+ Cilindro ( doublé r, doublé h)
+ volumen() :double
+ areaBase() :double
+ areaLateral () :doublé
+ areaTotal() :double
+ getInfo()
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 4
Ejercicio 2
Ejercicio 3
Código Ejercicio 1 Clase Circulo,java /*------------------------------------------------------------------------------------------
:* INSTITUTO TECNOLOGICO DE LA LAGUNA
:* INGENIERIA EN SISTEMAS COMPUTACIONALES
:* TOPICOS AVANZADOS DE PROGRAMACION "B"
:*
:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS
:*
:* Clase que modela al un circulo
:*
:* Archivo : Circulo.java
:* Autor : Eduardo Díaz Salazar 11130036
:* Fecha : 15/Feb/2013
:* Compilador : JAVA J2SE v1.7.0_11
:* Descripción : Tiene de atributo radio, tiene metodos que calculan el area, circunferencia
:* y diagonal del circulo. Tambien tiene un metodo setRadio () que asigna valor
:* al radio.
:*
:*------------------------------------------------------------------------------------------*/
PrismaTriangularApp
+ Main ( string [] args)
PrismaTriangular
- baseInferior : TrianguloRec
- baseSuperio : TrianguloRec
- ancho : double
+PrismaTriangular ( double b, double h, doublé h )
+ volumen() :double
+ areaBase() :double
+ areaLateral() :double
+ áreaTotal() :doublé
+ setAncho(doublé an)
PrismaTrapecioApp
+ Main ( string [] args)
PrismaTrapecio
- caraInferior :Trapecio
- caraSuperior :Tapecio
- ancho :double
+ PrismaTrapecio ( double b, double B, double a )
+ volumen() :double
+ areaBase() :double
+ areaLateral() :double
+ areaTotal() :double
+ setAncho( double an ) :double
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 5
public class Circulo {
//---------------------------------------------------------------------------------------------------------
-
//Atributos
private double radio;
//---------------------------------------------------------------------------------------------------------
-
// Constructor
public Circulo ( double r ) {
setRadio ( r );
}
//---------------------------------------------------------------------------------------------------------
-
// Metodo que calcula el area del circulo
public double area () {
return Math.PI * Math.pow ( radio, 2 );
}
//---------------------------------------------------------------------------------------------------------
-
//Metodo que calcula el diametro del circulo
public double diametro () {
return 2 * radio;
}
//---------------------------------------------------------------------------------------------------------
-
// Metodo que calcula la circunferencia del circulo
public double circunferencia () {
return Math.PI * diametro ();
}
//---------------------------------------------------------------------------------------------------------
-
// Propiedad set que asigna valor al radio
public void setRadio ( double r ) {
radio = r;
}
//---------------------------------------------------------------------------------------------------------
-
// Propiedad get que regresa el valor del radio
public double getRadio () {
return radio;
}
}
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 6
Clase Cilindro.java
/*------------------------------------------------------------------------------------------
:* INSTITUTO TECNOLOGICO DE LA LAGUNA
:* INGENIERIA EN SISTEMAS COMPUTACIONALES
:* TOPICOS AVANZADOS DE PROGRAMACION "B"
:*
:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS
:*
:* Clase que modela al un cilindro
:*
:* Archivo : Cilindro.java
:* Autor : Eduardo Díaz Salazar 11130036
:* Fecha : 16/Feb/2013
:* Compilador : JAVA J2SE v1.7.0_11
:* Descripción : Tiene de atributos radio y altura pero se crean 2 instancias de la clase
:* Ciruculo.java para calcular el area de las bases que son dos circulos.
:* cuenta con metodos para calcular el volumen y area total.
:*------------------------------------------------------------------------------------------*/
public class Cilindro {
//---------------------------------------------------------------------------------------------------------
-
//Atributos
private double radio;
private double altura;
private Circulo baseSuperior;
private Circulo baseinferior;
//---------------------------------------------------------------------------------------------------------
-
//Constructor
public Cilindro ( double r, double h ) {
radio = r;
altura = h;
baseSuperior = new Circulo ( radio );
baseinferior = new Circulo ( radio );
}
//---------------------------------------------------------------------------------------------------------
-
//Metodo que calcula el volumen del cilindro
public double volumen () {
return baseSuperior.area () * altura;
}
//---------------------------------------------------------------------------------------------------------
-
//Metodo que calcula la area de la base
public double areaBase () {
return baseSuperior.area ();
}
//---------------------------------------------------------------------------------------------------------
-
//Metodo que calcula la area de la base
public double areaLateral () {
return baseSuperior.circunferencia () * altura;
}
//---------------------------------------------------------------------------------------------------------
-
//Metodo que calcula el area total del cilindro
public double areaTotal () {
return areaLateral() + 2 * areaBase ();
}
//---------------------------------------------------------------------------------------------------------
-
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 7
// Propiedad que muestra informacion acerca del cilindro
public void getInfo () {
System.out.println ( "El radio es: " + radio + " y la altura es: " + altura );
}
//---------------------------------------------------------------------------------------------------------
-
}
Clase CilindroApp.java
/*------------------------------------------------------------------------------------------
:* INSTITUTO TECNOLOGICO DE LA LAGUNA
:* INGENIERIA EN SISTEMAS COMPUTACIONALES
:* TOPICOS AVANZADOS DE PROGRAMACION "B"
:*
:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS
:*
:* Clase tiene un metodo main
:*
:* Archivo : CirculoApp.java
:* Autor : Eduardo Díaz Salazar 11130036
:* Fecha : 15/Feb/2013
:* Compilador : JAVA J2SE v1.7.0_11
:* Descripción : En esta clase se crea una instancia de la clase Circulo para usar sus metodos
:* y mostrar los resultados del area, circunferencia y diagonal
:*
:*
:*------------------------------------------------------------------------------------------*/
import java.util.Scanner;
public class CirculoApp {
//-----------------------------------------------------------------------------------------
public static void main ( String [] args ) {
Scanner sc = new Scanner ( System.in );
System.out.println ( "-------------- Circulo --------------" );
System.out.print ( "Ingrese el radio: " );
double rad = sc.nextDouble ();
Circulo cir = new Circulo ( rad );
System.out.println ( "" );
System.out.println ( "El area : " + cir.area () );
System.out.println ( "La circunferencia es : " + cir.circunferencia () );
System.out.println ( "El diametro es : " + cir.diametro () );
}
} Ejercicio 2
Clase TrianguloRec.java
/*------------------------------------------------------------------------------------------
:* INSTITUTO TECNOLOGICO DE LA LAGUNA
:* INGENIERIA EN SISTEMAS COMPUTACIONALES
:* TOPICOS AVANZADOS DE PROGRAMACION "B"
:*
:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS
:*
:* Clase que modela un Triangulo Rectangulo
:*
:* Archivo : TrianguloRec.java
:* Autor : Eduardo Díaz Salazar 11130036
:* Fecha : 15/Feb/2013
:* Compilador : JAVA J2SE v1.7.0_11
:* Descripción : En esta clase tiene de atributos base y altura, los cuales usa para
:* calcular el area, hipotenusa y perimetro del triangulo rectangulo.
:*
:*
:*------------------------------------------------------------------------------------------*/
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 8
public class TrianguloRec {
//-----------------------------------------------------------------------------------------------
//Atributos
private double base;
private double altura;
//-----------------------------------------------------------------------------------------------
//Constructor
public TrianguloRec ( double b, double h ) {
setBase ( b );
setAltura ( h );
}
//-----------------------------------------------------------------------------------------------
//Metodo set de la base
public void setBase ( double ba ) {
base = ba;
}
//-----------------------------------------------------------------------------------------------
//Metodo set de la altura
public void setAltura ( double al ) {
altura = al;
}
//-----------------------------------------------------------------------------------------------
//Metodo get de la altura
public double getAltura () {
return altura;
}
//-----------------------------------------------------------------------------------------------
//Metodo que calcula el area
public double area () {
return base * altura / 2;
}
//-----------------------------------------------------------------------------------------------
//Metodo que calcula el perimetro
public double perimetro () {
return hipotenusa () + base + altura;
}
//-----------------------------------------------------------------------------------------------
//Metodo que calcula la hipotenusa
public double hipotenusa () {
return Math.sqrt ( Math.pow ( base, 2 ) + Math.pow ( altura, 2 ) );
}
//-----------------------------------------------------------------------------------------------
}
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 9
Clase PrismaTriangular.java
/*------------------------------------------------------------------------------------------
:* INSTITUTO TECNOLOGICO DE LA LAGUNA
:* INGENIERIA EN SISTEMAS COMPUTACIONALES
:* TOPICOS AVANZADOS DE PROGRAMACION "B"
:*
:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS
:*
:* Clase que modela un prisma triangular
:*
:* Archivo : PrismaTriangular.java
:* Autor : Eduardo Díaz Salazar 11130036
:* Fecha : 16/Feb/2013
:* Compilador : JAVA J2SE v1.7.0_11
:* Descripción : Tiene 2 instancias de la clase TrianguloRec.java que son las bases
:* del prisma y un atributo altura que es la altura del prisma.
:* Cuenta con metodos para calcular el volumen y area total.
:*------------------------------------------------------------------------------------------*/
public class PrismaTriangular {
//-------------------------------------------------------------------------------------------
private TrianguloRec baseInferior;
private TrianguloRec baseSuperior;
private double ancho;
//-------------------------------------------------------------------------------------------
//Constructor
public PrismaTriangular ( double b, double h, double a) {
baseInferior = new TrianguloRec ( b , h );
baseSuperior = new TrianguloRec ( b , h );
setAncho ( a );
}
//-------------------------------------------------------------------------------------------
//Metodo set que asgna el valor a lo ancho
public void setAncho ( double a ) {
ancho = a;
}
//-------------------------------------------------------------------------------------------
// Metodo que calcula el volumen del prisma
public double volumen () {
return baseInferior.area () * ancho;
}
//-------------------------------------------------------------------------------------------
// Metodo que calcula el area de la base
public double areaBase () {
return baseInferior.area ();
}
//-------------------------------------------------------------------------------------------
//Metodo que calcula el area lateral
public double areaLateral () {
return (ancho * baseInferior.getBase () ) + ( baseInferior.getAltura () * ancho ) + (
baseInferior.hipotenusa () * ancho );
}
//-------------------------------------------------------------------------------------------
//Metodo para calcular la area total
public double areaTotal () {
return areaLateral () + baseInferior.area ();
}
}
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 10
Clase PrismaTriangularApp.java
/*------------------------------------------------------------------------------------------
:* INSTITUTO TECNOLOGICO DE LA LAGUNA
:* INGENIERIA EN SISTEMAS COMPUTACIONALES
:* TOPICOS AVANZADOS DE PROGRAMACION "B"
:*
:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS
:*
:* Clase que hace uso de la clase PrismaTrangular.java
:*
:* Archivo : PrismaTriangularApp.java
:* Autor : Eduardo Díaz Salazar 11130036
:* Fecha : 16/Feb/2013
:* Compilador : JAVA J2SE v1.7.0_11
:* Descripción : Esta clase tiene un metodo main que tiene una instancia de la clase
:* PrismaTriangular.java para calcular el area de las bases, tambien
:* cuenta con metodos para calcular el volumen y area total.
:*------------------------------------------------------------------------------------------*/
import java.util.Scanner;
public class PrismaTriangularApp {
public static void main ( String [] args ) {
Scanner sc = new Scanner ( System.in );
System.out.println ( "-------------- Prisma Triangular --------------" );
System.out.print ( " Ingrese la base: " );
double bas = sc.nextDouble ();
System.out.print ( "Ingrese la altura: " );
double alt = sc.nextDouble ();
System.out.print ( "Ingrese el ancho: " );
double anc = sc.nextDouble ();
PrismaTriangular pri = new PrismaTriangular ( bas, alt, anc );
System.out.println ( "" );
System.out.println ( "El volumen es : " + pri.volumen () );
System.out.println ( "El area de la base es : " + pri.areaBase () );
System.out.println ( "El area lateral es : " + pri.areaLateral () );
System.out.println ( "El area total es : " + pri.areaTotal () );
}
}
Ejercicio 3 Clase Trapecio.java /*------------------------------------------------------------------------------------------
:* INSTITUTO TECNOLOGICO DE LA LAGUNA
:* INGENIERIA EN SISTEMAS COMPUTACIONALES
:* TOPICOS AVANZADOS DE PROGRAMACION "B"
:*
:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS
:*
:* Clase que modela un Trapecio
:*
:* Archivo : Trapecio.java
:* Autor : Eduardo Díaz Salazar 11130036
:* Fecha : 15/Feb/2013
:* Compilador : JAVA J2SE v1.7.0_11
:* Descripción : Esta clase tiene los metodos baseMayor, baseMenor y altura, con los
:* cuales se calcula el area, la diagolnal y perimetro del trapecio
:*
:*
:*------------------------------------------------------------------------------------------*/
public class Trapecio {
//------------------------------------------------------------------------------------------
//Atributos
private double baseMayor;
private double baseMenor;
private double altura;
//------------------------------------------------------------------------------------------
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 11
//Constructor
public Trapecio ( double b, double B, double a ) {
setbaseMayor ( B );
setbaseMenor ( b );
setaltura ( a );
}
//------------------------------------------------------------------------------------------
//Metodo set de la base Mayor
public void setbaseMayor ( double B ) {
baseMayor = B;
}
//------------------------------------------------------------------------------------------
//Metodo set base Menor
public void setbaseMenor ( double b ) {
baseMenor = b;
}
//------------------------------------------------------------------------------------------
//Metodo set de la altura
public void setaltura ( double a ) {
altura = a;
}
//------------------------------------------------------------------------------------------
//Metodo que calcula el area
public double area () {
return ( ( baseMayor - baseMenor ) * altura ) / 2;
}
//------------------------------------------------------------------------------------------
//Metodo que calcula el perimero
public double perimetro () {
return baseMayor + baseMenor + 2 * diagonal ();
}
//------------------------------------------------------------------------------------------
//Metodo que calcula la diagonal
public double diagonal () {
double c = ( baseMayor - baseMenor ) / 2;
return Math.sqrt ( Math.pow ( c , 2 ) + Math.pow ( altura , 2 ) );
}
//------------------------------------------------------------------------------------------
}
Clase PrismaTrapecio.java
/*------------------------------------------------------------------------------------------
:* INSTITUTO TECNOLOGICO DE LA LAGUNA
:* INGENIERIA EN SISTEMAS COMPUTACIONALES
:* TOPICOS AVANZADOS DE PROGRAMACION "B"
:*
:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS
:*
:* Clase que modela un prisma recto
:*
:* Archivo : PrismaTrapecio.java
:* Autor : Eduardo Díaz Salazar 11130036
:* Fecha : 16/Feb/2013
:* Compilador : JAVA J2SE v1.7.0_11
:* Descripción : Tiene 2 instancias de la clase Trapecio.java que son las bases
:* del prisma y 4 atributos que son: baseMeyor, baseMenor, altura y ancho.
:* Cuenta con metodos para calcular el volumen y area total.
:*------------------------------------------------------------------------------------------*/
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 12
public class PrismaTrapecio {
//------------------------------------------------------------------------------------------------
//Atributos
private Trapecio caraInferior;
private Trapecio caraSuperior;
private double baseMayor;
private double baseMenor;
private double altura;
private double ancho;
//------------------------------------------------------------------------------------------------
//Constructor
public PrismaTrapecio ( double bmen, double bmay, double alt, double anch ) {
caraInferior = new Trapecio ( bmen, bmay, alt );
caraSuperior = new Trapecio ( bmen, bmay, alt );
setAncho ( anch );
}
//------------------------------------------------------------------------------------------------
//Metodo set del ancho
public void setAncho ( double an ) {
ancho = an;
}
//------------------------------------------------------------------------------------------------
//Metodo set del volumen
public double volumen () {
return areaBase () * ancho;
}
//------------------------------------------------------------------------------------------------
//Metodo que calcula el area de la base
public double areaBase () {
return caraSuperior.area ();
}
//------------------------------------------------------------------------------------------------
//Metodo que calcula el area lateral del prisma
public double areaLateral () {
return caraInferior.perimetro () * ancho;
}
//------------------------------------------------------------------------------------------------
//Metodo que calcula el area total del prisma
public double areaTotal () {
return 2 * areaBase () + areaLateral ();
}
//------------------------------------------------------------------------------------------------
}
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 13
Clase PrismaTrapecioApp.java
/*------------------------------------------------------------------------------------------
:* INSTITUTO TECNOLOGICO DE LA LAGUNA
:* INGENIERIA EN SISTEMAS COMPUTACIONALES
:* TOPICOS AVANZADOS DE PROGRAMACION "B"
:*
:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS
:*
:* Clase que hace uso de la clase PrismaTrapecio.java
:*
:* Archivo : PrismaTrapecioApp.java
:* Autor : Eduardo Díaz Salazar 11130036
:* Fecha : 16/Feb/2013
:* Compilador : JAVA J2SE v1.7.0_11
:* Descripción : Esta clase tiene un metodo main que tiene una instancia de la clase
:* PrismaTrapecio.java para calcular el area de las bases, tambien
:* cuenta con metodos para calcular el volumen y area total.
:*------------------------------------------------------------------------------------------*/
import java.util.Scanner;
public class PrismaTrapecioApp {
//-----------------------------------------------------------------------------------------
public static void main ( String [] args ) {
Scanner sc = new Scanner ( System.in );
System.out.println ( "-------------- Prisma Trapecio --------------" );
System.out.print ( "Ingrese la base menor: " );
double bmen = sc.nextDouble ();
System.out.print ( "Ingrese la base mayor: " );
double bmay = sc.nextDouble ();
System.out.print ( " Ingrese la altura: " );
double altu = sc.nextDouble ();
System.out.print ( "Ingrese el ancho: " );
double anch = sc.nextDouble ();
PrismaTrapecio ptra = new PrismaTrapecio ( bmen, bmay, altu, anch );
System.out.println ( "" );
System.out.println ( "El volumen es : " + ptra.volumen () );
System.out.println ( "El area de la base es : " + ptra.areaBase () );
System.out.println ( "El area lateral es : " + ptra.areaLateral () );
System.out.println ( "El area totales : " + ptra.areaTotal () );
}
}
ITL Tópicos Avanzados de Programación Ene-Jun/2013
Pag. 14
Prueba de Ejecución
Ejercicio 1
Aquí se muestra la prueba del programa, se le pide el radio y la altura, al final se muestra el volumen, area de la base y el area
total.
Ejercicio 2
Se le pide al usuario la base, altura y ancho, y se muestra su volumen area de la base, area de lateral y area total.
Ejercicio 3
Aquí se aprecia que le pieden los datos de base menor, base mayor, altura y ancho del prisma, y se muestra su volumen, area de
la base, area lateral y area total.