TERCER TALLER DE OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS Elaborado por: Esmeide Leal Revisado por : Jaime Guzman, El siguiente taller tiene como objetivo, poner en práctica la teoría vista en clase con el fin de practicar, la creación de una Clase , instanciar un objeto, referencia a objetos, sobre carga de métodos (construtores), y por último el concepto de apuntador this. 1. Practicando la creación de clases y el concepto de referencia de objetos. class Fruta{ float precio; String variedad; Empresa empresa; void desplegar() { System.out.println ("Empresario: " + empresa.nombre + ", Variedad: " + variedad); } } class Empresa{ int codigo; String nombre; void desplegar() { System.out.println ("Codigo Empresa: " + codigo + ", Nombre Empresa: " + nombre); } } class MainClase { public static void main (String args[]) { Fruta platano = new Fruta (); Empresa empresa1 = new Empresa (); Empresa empresa2 = empresa1; empresa1.codigo = 1; empresa1.nombre= "Caribu"; empresa1.desplegar(); platano.precio= 100; platano.variedad= "dominico"; platano.empresa= empresa1; platano.desplegar(); platano.empresa.nombre = "Coltejer"; empresa2.desplegar(); } } z Universidad Nacional de Colombia - Medellín 2. Sobrecarga de funciones y constructores a. Sobrecargar constructores class Fruta{ float precio; String variedad; Fruta (float p, String v) { precio=p; variedad = v; } Fruta (String v) { precio=1000; variedad = v; } void desplegar() { System.out.println ("Variedad: " + variedad + ", Precio: " + precio); } } class MainClase { public static void main (String args[]) { Fruta platano = new Fruta ("Dominico"); Fruta manzana = new Fruta (500, "golden"); platano.desplegar(); manzana.desplegar(); } } b. Ambigüedad en la sobrecarga de métodos class A { void f(int n){ System.out.println("Tipo entero"); } void f(float n){ System.out.println("Tipo flotante"); } } public class B { public static void main(String args[]){ A a = new A(); z Universidad Nacional de Colombia - Medellín byte b = 3; long l = 3; double d = 3; a.f(l); a.f(b); a.f(d); //observe como esta línea falla al compilar. } } 3. Utilización de la variable this. • • • Definida implícitamente en el cuerpo de los métodos Referencia al objeto sobre el que se invoca el método This es útil cuando una variable de instancia y una variable de un método tienen el mismo nombre: class Clase { int dato = 0; void dato(int dato) { this.dato = dato; } int dato() { return dato; } } public class Receptor { // Programa principal public static void main(String[] args) { Clase c = new Clase(); c.dato(5); System.out.println(c.dato()); } } • Otro uso de this es llamar un constructor desde otro constructor desde la misma clase. Para hacerlo se debe seguir ciertas reglas: 1. this debe utilizarse en la primera línea del constructor 2. Debe utilizar la forma this (parámetros del constructor) class Telefono{ public Telefono() { this(5); } public Telefono(int valor) {System.out.println("LLamada al Segundo Constructor"); } } class MainClase { public static void main (String args[]) { Telefono ejemplo1=new Telefono(); } } z Universidad Nacional de Colombia - Medellín