Sunteți pe pagina 1din 17

Universidad Cesar Vallejo Curso: Programacin Orientada a Objetos Escuela de Ingeniera de Sistemas Sesion de Clase 01 ______________________________________________________________________

PROGRAMACION ORIENTADA A OBJETOS CLASE Una clase es una plantilla o prototipo que define las variables y los mtodos comunes a todos los objetos de cierto tipo. Las clases definen estado(variables) y comportamiento (mtodos) 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 mayora de los conceptos de la Orientacin a Objetos. Una clase es una agrupacin de datos y de cdigo (mtodos) que acta 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. Mtodos (se denominan Mtodos Miembro). La sintaxis general para la declaracin 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 Rectngulo cuyos atributos son base y altura, adems queremos calcular el rea, permetro y diagonal del Rectngulo 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: Programacin Orientada a Objetos Escuela de Ingeniera 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 Rectngulo tiene 2 atributos base y altura los cuales son privados esto quiere decir que estas 2 variables son visibles en la clase Rectngulo. El primer mtodo que se ha implementado es el constructor , este mtodo se llama igual que la clase y no devuelve ningn valor y permite inicializar los atributos de la clase. Este mtodo 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 mtodos setBase(double b) y setAltura(double h). Y si deseamos obtener los valores de los atributos creamos los mtodos getBase() y getAltura(). Adems se han creado los mtodos area(), permetro() y diagonal() que permiten calcular el area, permetro y diagonal del rectangulo. En el mtodo toString() (a cadena) se crea una cadena con la informacin de los atributos de la clase. En realidad podemos colocar cualquier informacin. 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 declaracin no crea nuevos objetos. En la declaracin (Rectangulo R) se declara una variable llamada R la cual ser usada para referirnos a un Objeto Rectangulo. La referencia esta vaca. Una referencia vaca 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: Programacin Orientada a Objetos Escuela de Ingeniera 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.nombredeMtodo. Por ejemplo para calcular el area usamos R.area(), para calcular el permetro R.perimetro() y para calcular la diagonal R.diagonal(). Al escribir System.out.println(Rectangulo : +R); en realidad se esta llamando tcitamente al mtodo toString de la clase R. Si se deseara modificar el atributo base del Objeto se debe usar el mtodo setBase por ejemplo si despus de crear el objeto queremos que base tenga el valor 10, se colocaria la siguiente instruccin : R.setBase(10); lo mismo se hace si se quiere modificar la altura. Si se desea saber el valor de algn atributo del objeto se usa los mtodos 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: Nmero de Cuenta, nombres y Saldo. Esta clase debe tener los mtodos 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: Programacin Orientada a Objetos Escuela de Ingeniera 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: Programacin Orientada a Objetos Escuela de Ingeniera 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); } } Crear la clase Tiempo que tenga como atributos: horas, minutos y segundos. Crear los mtodos: incrementaSegundo, que incrementa un segundo al tiempo y el mtodo 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; } 2)

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 5

Universidad Cesar Vallejo Curso: Programacin Orientada a Objetos Escuela de Ingeniera 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: Programacin Orientada a Objetos Escuela de Ingeniera 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 mtodo 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 raz 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: Programacin Orientada a Objetos Escuela de Ingeniera 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: Programacin Orientada a Objetos Escuela de Ingeniera 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)); } } Crear la clase Fecha que tenga como atributos da, mes y ao, 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. Adems crear los metodos diaSiguiente, de tal manera que nos devuelva la fecha del da siguiente y diaAnterior que nos devuelva la fecha del da anterior. public class Fecha { private int dia; private int mes; private int ao; public Fecha() { } 4)

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 9

Universidad Cesar Vallejo Curso: Programacin Orientada a Objetos Escuela de Ingeniera de Sistemas Sesion de Clase 01 ______________________________________________________________________
public Fecha(int d, int m, int a) { dia = d; mes = m; ao = a; } public int getAo() { return ao; } public void setAo(int a) { ao = 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 + "ao=" + ao + '}'; }

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,ao)) { dia=1; mes++; if(mes>12) { mes=1;

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 10

Universidad Cesar Vallejo Curso: Programacin Orientada a Objetos Escuela de Ingeniera de Sistemas Sesion de Clase 01 ______________________________________________________________________
ao++; } } public void diaAnterior() { dia--; if(dia==0) { if(mes==1) dia=numDiasMes(12,ao); else dia=numDiasMes(mes-1,ao); mes--; if(mes==0) { mes=12; ao--; } } }

} }

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,ao; Fecha F; System.out.print("dia : "); dia= entrada.nextInt(); System.out.print("mes : "); mes= entrada.nextInt(); System.out.print("ao : "); ao= entrada.nextInt(); F= new Fecha(dia,mes,ao); F.diaSiguiente(); System.out.println(F); F.diaAnterior(); System.out.println(F); }

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 11

Universidad Cesar Vallejo Curso: Programacin Orientada a Objetos Escuela de Ingeniera 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, multiplicacin 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: Programacin Orientada a Objetos Escuela de Ingeniera 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: Programacin Orientada a Objetos Escuela de Ingeniera 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);

} }

Crear la clase ArregloReales con atributos un arreglo de reales y el nmero 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 tamao) { X = new double[tamao]; n=0; } public void agregar(double dato) { if(n<X.length) { X[n]=dato; n++; } } public double getElemento(int p) { return X[p]; } public int getN() { return n;

6)

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 14

Universidad Cesar Vallejo Curso: Programacin Orientada a Objetos Escuela de Ingeniera de Sistemas Sesion de Clase 01 ______________________________________________________________________
}

public int buscar(double dato) { int i; for(i=0;i<n;i++) { if(X[i]==dato) return i; } return -1; }

public boolean eliminar(int p) { if(p>=0 && p<n) { for(int i=p;i<n-1;i++) X[i]=X[i+1]; n=n-1; return true; } else return false; } public boolean insertar(int p, double dato) { if(p>=0 && p<=n) { for(int i=n-1;i>=p;i--) X[i+1]=X[i]; X[p]=dato; n++; return true; } else return false; } public void ordenar() { int i,j; double temp; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(X[i]>X[j]) { temp=X[i]; X[i]=X[j]; X[j]=temp; }

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 15

Universidad Cesar Vallejo Curso: Programacin Orientada a Objetos Escuela de Ingeniera de Sistemas Sesion de Clase 01 ______________________________________________________________________
} public boolean modificar(int p, double dato) { if(p>=0 && p<n) { X[p]=dato; return true; } else return false; } } 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); ArregloReales A = new ArregloReales(); int n,p,op; double dato; do{ System.out.println("Arreglo de Reales"); System.out.println("[1] Agregar"); System.out.println("[2] Mostrar"); System.out.println("[3] Budcar "); System.out.println("[4] Eliminar"); System.out.println("[5] Insertar"); System.out.println("[6] Ordenar"); System.out.println("[7] Salir"); System.out.print("Ingresear opcion (1-6): "); op=entrada.nextInt(); switch(op) { case 1: System.out.print("Ingrese dato : "); dato=entrada.nextDouble(); A.agregar(dato); break; case 2: System.out.println("Elementos del arreglo");

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 16

Universidad Cesar Vallejo Curso: Programacin Orientada a Objetos Escuela de Ingeniera de Sistemas Sesion de Clase 01 ______________________________________________________________________
for(int i=0;i<A.getN();i++) System.out.println(A.getElemento(i)); break; case 3: System.out.print("Dato a buscar: "); dato=entrada.nextDouble(); p=A.buscar(dato); if(p!=-1) System.out.println("Dato se encuentra en la posicion"+p); else System.out.println("Dato no se encuentra"); break; case 4: System.out.print("Dato a eliminar: "); dato=entrada.nextDouble(); p=A.buscar(dato); if(p!=-1) { A.eliminar(p); System.out.println("Dato eliminado"); } else System.out.println("Dato no se encuentra"); break; case 5: System.out.print("Dato a insertar: "); dato=entrada.nextDouble(); System.out.print("Posicion donde desea insertar : "); p=entrada.nextInt(); if(A.insertar(p, dato)) System.out.println("Dato insertdo"); else System.out.println("Posicion no valida"); break; case 6: A.ordenar(); break;

} }

} }while(op!=7);

______________________________________________________________________ Docente: Mg. Marcelino Torres Villanueva 17

S-ar putea să vă placă și