Poo Clase01

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 _

Views 83 Downloads 3 File size 92KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________

PROGRAMACION ORIENTADA A OBJETOS CLASE Una clase es una plantilla o prototipo que define las variables y los métodos comunes a todos los objetos de cierto tipo. Las clases definen estado(variables) y comportamiento (métodos) de todos los objetos. Las clases son el mecanismo por el que se pueden crear nuevos Tipos en Java. Las clases son el punto central sobre el que giran la mayoría de los conceptos de la Orientación a Objetos. Una clase es una agrupación de datos y de código (métodos) que actúa sobre esos datos, a la que se le da un nombre. Una clase contiene: Datos (se denominan Datos Miembro). Estos pueden ser de tipos primitivos o referencias. Métodos (se denominan Métodos Miembro). La sintaxis general para la declaración de una clase es: modificadores class nombre_clase { declaraciones_de_miembros ; } Los modificadores son palabras clave que afectan al comportamiento de la clase. Por ejemplo crearemos la clase Rectángulo cuyos atributos son base y altura, además queremos calcular el área, perímetro y diagonal del Rectángulo class Rectangulo{ private double base; private double altura; public Rectangulo(double b, double h) // Constructor { base = b; altura=h; } public void setBase(double b) { base=b; } public void setAltura(double h) { altura=h; } public double getBase() { return base; } public double getAltura() { return altura; } public double area() { return base*altura; } public double perimetro() { return 2*base+2*altura; }

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 1

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ public double diagonal() { return Math.sqrt(Math.pow(base,2)+Math.pow(altura,2)); } public String toString() { return "base = "+base+" "+altura; } } La clase Rectángulo tiene 2 atributos base y altura los cuales son privados esto quiere decir que estas 2 variables son visibles en la clase Rectángulo. El primer método que se ha implementado es el constructor , este método se llama igual que la clase y no devuelve ningún valor y permite inicializar los atributos de la clase. Este método se llama en el momento de crear un objeto. Como los atributos base y altura son privados, para que los usuarios que usan los objetos puedan modificar los atributos se crean los métodos setBase(double b) y setAltura(double h). Y si deseamos obtener los valores de los atributos creamos los métodos getBase() y getAltura(). Además se han creado los métodos area(), perímetro() y diagonal() que permiten calcular el area, perímetro y diagonal del rectangulo. En el método toString() (a cadena) se crea una cadena con la información de los atributos de la clase. En realidad podemos colocar cualquier información. import java.util.Scanner; public class pruebaRectangulo{ public static void main(String args[]) throws IOException { Scanner entrada= new Scanner(System.in); double b, h; Rectangulo R; System.out.print("Ingrese base : "); b=entrada.nextDouble(); System.out.print("Ingrese altura : "); h=entrada.nextDouble(); R = new Rectangulo(b,h); System.out.println("Rectangulo : "+R); System.out.println("Area : "+R.area()); System.out.println(“Perimetro : “+R.perimetro()); System.out.println("Diagonal : "+R.diagonal()); } } Dentro del metodo main de la clase PruebaRectangulo se ha declarado dos variables de tipo primitivo b,h y una variable R que es de tipo Rectangulo. Al colocar : Rectangulo R; Se esta declarando a R como un Objeto de la Clase Rectangulo. La declaración no crea nuevos objetos. En la declaración (Rectangulo R) se declara una variable llamada R la cual será usada para referirnos a un Objeto Rectangulo. La referencia esta vacía. Una referencia vacía es conocida como referencia nula. Al colocar : R = new Rectangulo(3,4); Con el operador new creamos un objeto de la clase Rectangulo.El operador new instancia una clase asignando memoria para el nuevo Objeto.

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 2

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________

El operador new requiere una llamada a un constructor de la clase a instanciar. El constructor inicializa el nuevo objeto.El operador new retorna una referencia al objeto creado. Una vez creado el objeto para poder llamar a sus metodos usamos lo siguiente objeto.nombredeMétodo. Por ejemplo para calcular el area usamos R.area(), para calcular el perímetro R.perimetro() y para calcular la diagonal R.diagonal(). Al escribir System.out.println(“Rectangulo : “+R); en realidad se esta llamando tácitamente al método toString de la clase R. Si se deseara modificar el atributo base del Objeto se debe usar el método setBase por ejemplo si después de crear el objeto queremos que base tenga el valor 10, se colocaria la siguiente instrucción : R.setBase(10); lo mismo se hace si se quiere modificar la altura. Si se desea saber el valor de algún atributo del objeto se usa los métodos get, por ejemplo si quisiera imprimir el valor de la base del objeto R se tendria que escribir lo siguiente : System.out.println(“La base es : “+R.getBase()); Ejercicios 1) Crear la clase Cuenta con los siguientes atributos: Número de Cuenta, nombres y Saldo. Esta clase debe tener los métodos para depositar una cantidad, retirar una cantidad. public class Cuenta { private String numeroDeCuenta; private String nombres; private double saldo; public Cuenta() { } public Cuenta(String nc, String nom, double s) { numeroDeCuenta=nc; nombres=nom; saldo=s; } public String getNombres() { return nombres; } public void setNombres(String nom) { nombres = nom; } public String getNumeroDeCuenta() { return numeroDeCuenta; } public void setNumeroDeCuenta(String nc) { numeroDeCuenta = nc; } public double getSaldo() { return saldo; } public void setSaldo(double s) { saldo = s; }

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 3

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ @Override public String toString() { return "Cuenta{" + "numeroDeCuenta=" + numeroDeCuenta + "nombres=" + nombres + "saldo=" + saldo + '}'; } public void depositar(double cantidad) { saldo = saldo+ cantidad; } public boolean retirar(double cantidad) { if(saldo>=cantidad) { saldo=saldo-cantidad; return true; } else return false; } } package proyectoclase_01_01; import java.util.Scanner; /** * * @author Marce */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Scanner entrada = new Scanner(System.in); Cuenta C; String numeroCuenta, nombres; double saldo,cantidad; int op; System.out.print("Numero de Cuenta : "); numeroCuenta=entrada.nextLine(); System.out.print("Nombres : "); nombres=entrada.nextLine(); System.out.print("Saldo : "); saldo = entrada.nextDouble(); C = new Cuenta(numeroCuenta,nombres,saldo);

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 4

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ do{ System.out.println("Operacion a realizar "); System.out.println("1) Deposito"); System.out.println("2) Retiro " ); System.out.println("3) Salir"); System.out.print("Ingresar opcion (1-3) :"); op=entrada.nextInt(); switch(op) { case 1: System.out.print("Ingrese cantiddad a depositar: "); cantidad=entrada.nextDouble(); C.depositar(cantidad); System.out.println(C); break; case 2: System.out.print("Ingrese cantiddad a retirar: "); cantidad=entrada.nextDouble(); if(C.retirar(cantidad)==false) System.out.println("No tienes suficiente dinero para retirar "); System.out.println(C); break; } }while(op!=3); } } 2)

Crear la clase Tiempo que tenga como atributos: horas, minutos y segundos. Crear los métodos: incrementaSegundo, que incrementa un segundo al tiempo y el método disminuyeSegundo que disminuye un segundo al tiempo. public class Tiempo { private int horas; private int minutos; private int segundos; public Tiempo() { } public Tiempo(int h, int m, int s) { horas = h; minutos = m; segundos = s; } public int getHoras() { return horas; } public void setHoras(int h) { horas = h; }

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 5

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ public int getMinutos() { return minutos; } public void setMinutos(int m) { minutos = m; } public int getSegundos() { return segundos; } public void setSegundos(int s) { segundos = s; } @Override public String toString() { return "Tiempo{" + "horas=" + horas + "minutos=" + minutos + "segundos=" + segundos + '}'; } public void incrementarSegundo() { segundos++; if(segundos==60) { segundos=0; minutos++; if(minutos==60) { minutos=0; horas++; if(horas==24) horas=0; } } } public void disminuirSegundo() { segundos--; if(segundos==-1) { segundos=59; minutos--; if(minutos==-1) { minutos=59; horas--; if(horas==-1) horas=23; } }

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 6

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ }

} import java.util.Scanner; /** * * @author Marce */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Scanner entrada= new Scanner(System.in); int horas,minutos,segundos; Tiempo T; System.out.print("Horas : "); horas= entrada.nextInt(); System.out.print("Minutos : "); minutos= entrada.nextInt(); System.out.print("Segundos : "); segundos= entrada.nextInt(); T= new Tiempo(horas,minutos,segundos); T.incrementarSegundo(); System.out.println(T); T.disminuirSegundo(); System.out.println(T); }

}

3)

Crear la clase vector3d que permita manipular vectores de tres componentes (coordenadas x, y, z) de acuerdo a las siguientes normas: a. Tiene un método llamado igual que permite saber si dos vectores tienen sus componentes o coordenadas iguales. b. Tiene un metodo que calcula la norma de un vector. La norma es raíz cuadrada de ( x2+y2+z2) c. Tiene un metodo producto escalar de dos vectores. El producto escalar de dos vectores v1=(x1,y1,z1) y v2=(x2,y2,z2) es igual a : x1*x2+y1*y2+z1*z2.

public class Vector3d { private double x; private double y; private double z; public Vector3d() { } public Vector3d(double vx, double vy, double vz) { x = vx; y = vy;

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 7

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ z = vz;

} public double getX() { return x; } public void setX(double vx) { x = vx; } public double getY() { return y; } public void setY(double vy) { y = vy; } public double getZ() { return z; } public void setZ(double vz) { z = vz; } @Override public String toString() { return "Vector3d{" + "x=" + x + "y=" + y + "z=" + z + '}'; } public boolean iguales(Vector3d v) { if(x==v.getX() && y==v.getY() && z == v.getZ()) return true; else return false; } public double norma() { return Math.sqrt(Math.pow(x,2)+ Math.pow(y,2)+Math.pow(z,2)); } public double productoEscalar(Vector3d v) { return x*v.getX()+ y *v.getY()+ z*v.getZ(); } } import java.util.Scanner; /**

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 8

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ * * @author Marce */ public class Main {

/** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Scanner entrada = new Scanner(System.in); Vector3d v1,v2; double x,y,z; System.out.println("Primer Vector "); System.out.print("Valor de x : "); x = entrada.nextDouble(); System.out.print("Valor de y : "); y = entrada.nextDouble(); System.out.print("Valor de z : "); z = entrada.nextDouble(); v1 = new Vector3d(x,y,z); System.out.println("Segundo Vector "); System.out.print("Valor de x : "); x = entrada.nextDouble(); System.out.print("Valor de y : "); y = entrada.nextDouble(); System.out.print("Valor de z : "); z = entrada.nextDouble(); v2 = new Vector3d(x,y,z); if(v1.iguales(v2)) System.out.println("Los vectores son iguales "); else System.out.println("Los vectores no son iguales "); System.out.println("La norma del primer vector es : "+v1.norma()); System.out.println("La norma del segundo vector es : "+v2.norma()); System.out.println("El producto escalar de los vectores es : "+v1.productoEscalar(v2)); } } 4)

Crear la clase Fecha que tenga como atributos día, mes y año, En el constructor se debe validar que la fecha ingresada sea la correcta. Si la fecha ingresada es incorrecta colocar datos de tal manera que sea correcta. Además crear los metodos diaSiguiente, de tal manera que nos devuelva la fecha del día siguiente y diaAnterior que nos devuelva la fecha del día anterior. public class Fecha { private int dia; private int mes; private int año; public Fecha() { }

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 9

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ public Fecha(int d, int m, int a) { dia = d; mes = m; año = a; } public int getAño() { return año; } public void setAño(int a) { año = a; } public int getDia() { return dia; } public void setDia(int d) { dia = d; } public int getMes() { return mes; } public void setMes(int m) { mes = m; } @Override public String toString() { return "Fecha{" + "dia=" + dia + "mes=" + mes + "año=" + año + '}'; }

public int numDiasMes(int m, int a) { int nd[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if((a%4==0 && a%100!=0) || a % 400==0) nd[2]=29; return nd[m]; } public void diaSiguiente() { dia++; if(dia>numDiasMes(mes,año)) { dia=1; mes++; if(mes>12) { mes=1;

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 10

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ año++;

}

}

} public void diaAnterior() { dia--;

}

if(dia==0) { if(mes==1) dia=numDiasMes(12,año); else dia=numDiasMes(mes-1,año); mes--; if(mes==0) { mes=12; año--; } }

}

import java.util.Scanner; /** * * @author Marce */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Scanner entrada= new Scanner(System.in); int dia,mes,año; Fecha F; System.out.print("dia : "); dia= entrada.nextInt(); System.out.print("mes : "); mes= entrada.nextInt(); System.out.print("año : "); año= entrada.nextInt(); F= new Fecha(dia,mes,año); F.diaSiguiente(); System.out.println(F); F.diaAnterior(); System.out.println(F); }

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 11

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ } 5)

Crear la clase complejo que tenga como atributos: preal y pimag, y realizar las siguientes operaciones : Suma, resta, multiplicación y division de 2 complejos.

public class Complejo { private double preal; private double pimag; public Complejo() { } public Complejo(double pr, double pi) { preal = pr; pimag = pi; } public double getPimag() { return pimag; } public void setPimag(double pi) { pimag = pi; } public double getPreal() { return preal; } public void setPreal(double pr) { preal = pr; } @Override public String toString() { return "Complejo{" + "preal=" + preal + " pimag=" + pimag + "i }"; } public Complejo suma(Complejo c) { Complejo s = new Complejo(); s.preal = preal + c.preal; s.pimag = pimag + c.pimag; return s; } public Complejo resta(Complejo c) { Complejo r = new Complejo(); r.preal = preal - c.preal; r.pimag = pimag - c.pimag; return r; }

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 12

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ public Complejo multiplicacion(Complejo c) { Complejo m = new Complejo(); m.preal = preal*c.preal- pimag*c.pimag; m.pimag = pimag*c.preal + preal*c.pimag; return m; }

public Complejo division(Complejo c) { Complejo d = new Complejo(); double den; den = Math.pow(c.preal,2)+ Math.pow(c.pimag, 2); d.preal = (preal*c.preal + pimag*c.pimag)/den; d.pimag = (pimag*c.preal - preal*c.pimag)/den; return d; } } import java.util.Scanner; /** * * @author Marce */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Scanner entrada = new Scanner(System.in); Complejo c1,c2,s,r,m,d; double preal,pimag; System.out.println("Primer Complejo"); System.out.print("Parte real : "); preal = entrada.nextDouble(); System.out.print("Parte imaginaria : "); pimag = entrada.nextDouble(); c1 = new Complejo(preal,pimag); System.out.println("Segundo Complejo"); System.out.print("Parte real : "); preal = entrada.nextDouble(); System.out.print("Parte imaginaria : "); pimag = entrada.nextDouble();

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 13

Universidad Cesar Vallejo Curso: Programación Orientada a Objetos Escuela de Ingeniería de Sistemas Sesion de Clase 01 ______________________________________________________________________ c2 = new Complejo(preal,pimag); s= c1.suma(c2); System.out.println("Suma : "+s); r= c1.resta(c2); System.out.println("Resta : "+r); m= c1.multiplicacion(c2); System.out.println("Suma : "+m);

}

d= c1.division(c2); System.out.println("Suma : "+d);

}

6)

Crear la clase ArregloReales con atributos un arreglo de reales y el número de elementos ingresados. Hacer un menú donde se tenga las opciones de agregar, mostrar, eliminar, insertar, ordenar. public class ArregloReales { private double X[]; private int n; public ArregloReales() { X = new double[50]; n=0; } public ArregloReales(int tamaño) { X = new double[tamaño]; n=0; } public void agregar(double dato) { if(n