Está en la página 1de 20
captruo Las clases son el nicleo de Java, Son la construccién légica sobre a que se basa el lenguaje Java, definen la forma y naturaleza de un objeto, y constituyen los fundamentos de la programacién orientada 2 ‘objetos. Cualquier concepto que quiera implementarse en un programa Java debe ser encapsulado dentro de una clase. Este capitulo esta dedicado a las clases y la forma como se deben utilizar, en capitulos posteriores veremos aspectos mas avanzados de este importante tema, Temas de desarrollar: 8.1. Clases Vs. Objetos 8.2. Definicién de una Clase 8.3. Declaracién de Objetos ~ Definicién de Variables o Campos 5 Definicién de Métodes 8,6- Ocultando los Datos 8.7- Sobrecarga 8.8- Constructores Una clase es una representacién de un tipo de objeto en particular, y define un nuevo tipo de dato. Las clases se utlizan para crear objetos de ese tipo de clase en particular, esto es, crear objetos que incorporen todos los componentes especificados dentro de la clas. Una clase esta conformada basicamente por atributos y operaciones, los atributos representan los datos de la clase y se implementan meciante variables, las operaciones se implementan a través de los ‘métodos, los atributos se deben manipular solamente a través de los métodos. ‘Empleado ~coaig rowers suelo = fchatnereso * creartvo ( ) + gettorire () ++ setsusio () * ganeracesn ( ) ++ Operation! () Figura 8.1 Ejemplo de una case ulizando notaclén UML Las clases son la base de le Programacién Orlentada a Objetos (POO), y sus caracteristicas mas importantes son: ~ Encapsulacién Las clases pueden ser declaradas como paiblicas (public) y como package (accesibies sblo para otras clases del package). Los atributos miembros y los métodos pueden ser public, private, protected y package. De esta forma se puede controlar el acceso y evitar un uso inadecuado. Herencia z Una clase puede derivar de otra (extends), yen ese caso hereda todos sus atributos y operaciones. Una clase derivada puede aftadir nuevos atributos y operaciones y/o redefinir os atributos y operaciones heredados. ~ Polimorfismo % Los objetos de distintas clases pertenecientes a una misma jerarquia o que implementan una misma Interfase pueden tratarse de una forma general e individualizada, al mismo tiempo. Esto faciits la programacién y el mantenimiento del cédigo. ara utilizar una clase debe instanciarse, esto se realiza con el operador new, por ejemplo, supongamos que tenemos Ia clase Ventana: Para crear un objeto o instancia de esta clase tenemos dos alternativas, la primera en la misma linea de declaracién, tal como se ilustra a continuacion: Para acceder a los componentes (variable © campos, y métodos) de un objeto debemos utilizar el ~ ‘operador punto (.}, por ejemplo para modificar la posicién de la ventana seria de la siguiente manera: Para ejecutar el método pintar la Instruccién es la siguiente: Para resumir, podemos afirmar que una clase es la definicién de un tipo de objeto, y esta compuesta por atributos y operaciones; mientras que el objeto es la instanciacién de una clase, y esta compuesto por variables 0 campos, y métodos. Por ejemplo si queremos definr la clase Empleado, la instruccién es: Es Importante recordar que el nombre del archivo debe ser igual al nombre de la clase seguido de java, ten este caso debe ser Empleado java. Como se explico en la seccién 8.1 para crear los objetos se debe utilizar el operador new. OPERADOR: NEW Eloperador new crea el objeto, esto quiere decir que asigna memoria el objeto. Para utilizar el operador new tenemos dos sintaxls. Sintaxis 1 Instruccién arti Articulo artt; null att art! = new Articulol); —— nombre precio Figura 8.2 Instanciacisn de una clase (Creacién de un objeto. ASIGNACION DE OBJETOS ‘Cuando creamos un objeto internamente existe un puntero, al que no tenemos accese, pero cuando asignamos objetos lo que realmente estamos asignando son las direcciones de memoria donde estan definidos os objetos, tal como se llustra en la Figura 8.3. Articulo artt = new Articulo(); Articulo art2 = artt; artt — = Se Figura 8.3 Asignacién de objetos. ‘8.4. DEFINICION DE VARIABLES 0 CAMPOS Sintaxis [Tipo_Acceso] Tipo nombre; El Tipo_Acceso puede ser: public indica que se puede acceder al campo desde cualquier programa, También es accesible por clases derivadas (subclases) protected | Indica que solo se puede acceder al campo desde métodos de la misma clase y clases derivadas (subclases) private Trdica que solo se puede acceder al campo desde métodos de la misma clase. | SS aac ) d JIIVIIIIIID » YIVIIAIIIID J J ‘Cuando no se especifica el Tipo_Acceso el acceso al campo es permitido por métodos de la misma clase y desde clases que se encuentran en el mismo paquete. Ejemplo 8.1 Como ejemplo ilustrativo tenemos la clase Articulo que tiene definido 3 atributos, ‘Articulo + ei i fe pec Figura 8.4 Clase Articulo La implementacién de esta case se llustra @ continuacién: Articulo.java Esta clase define un nuevo tipo de dato constituido por tres campos, en el siguiente programa se ilustra como se debe usar la clase Articulo. Compilacién y ejecucién: na2n100\cap8>javac progOe0l java [enter] C:\javadn100\cap8>Java progoBot [Enter] 100-Televsor-500.0, 200-Piancha-80.0 100-Televisor-500.0 ‘Se deduce de este resultado que tanto artt y art3 apuntan al mismo objeto. ‘8.5 DEFINICION DE METODOS sintanis [Tipo_Acceso} Tipo_Dato nombre_método( lista_de_parametros ) { 1] Cuerpo del método; uy ElTipo_Acceso puede ser: accesible por clases derivadas (subclases). ‘public Indica que se puede acceder al método desde cualquier programa. También es derivadas (subclases) protected Indice que solo se puede acceder al método desde de la misma clase y clases, private [indica que solo se puecle acceder al método desde de la misma clase, Cuando no se especifica el Tipo_Acceso el acceso al método es permitido desde la misma clase y desde clases que se encuentran en el mismo paquete. E1Tipo_Dato determina el tipo de dato que retorna el método, puede ser cualquier tipo vido, incluso los tipos de clases creados por usted, Siel método no retorna ningun valor se debe especificar void. Los parémetros se especifican de la siguiente manera: tipo perametrot, tipo2 parametro2, ... Los parémetros son variables que reciben los valores de los argumentas que se pasan al método cuando este es invocado. Si el métado no tiene parémetros, la lista de pardmetros estard vacia. Los métodos que retornan un tipo diferente a void, deben retornar un valor a la instruccién que realiza la llamada mediante la instruccién return utlizando la siguiente sinta : retuim sxpresiény ‘expresin representa el valor que retorna el método, ee «> Ejemplo 8.2 = En el siguiente ejemplo se ilustra el uso de métodas, para eso se a definido una clase de nombre ~Caleuladora que tiene definido dos atributos publicos nt yn2,y dos operaciones suma()y producto). ‘aletladora lent lene [sums () l+proaucis¢) d J Figura 8.5 Clase Operacién ) ‘A continuacién Ia implementacién de la clase: YIIIIIID JddIDIDID)99 ) JIIDVI ) 2 yi yL oR tmcuneDeemoctamaconine Compilacién y ejecucién: ) Como se puede apreciar en el ejemplo, después de asignarlos datos, invocando alos métodos tenemos — acceso al resultado esperado. Ejemplo 8.3 my En el siguiente ejemplo tenemos una segunda versién de la clase Calculadora, donde las operaciones ‘tienen parémetros, tal como se ilustra en la Figura 8.6. Caleuladora + suma (Cina (2) - }+ producio (in) nt, fn} 2) Figura 8.6 Clase Calculadoraversi6n 2. A continuacién la implementacion de la clase: eacuiadorazjava SSS El programa que ilustra el uso de la clase Calculadora2 es el siguiente: prog0803.java Eas Sama ‘System.out pritin’nt = * +2); ‘System.out printin(*n2 =" +); ‘System.out prntin("Suma = * +0bj.suma(a,b)); ‘System.out printin(*Producto = * +0bj.producto(a,)); } Compilacién y ejecucién Ci\javazn100\cap8>javac prog0803 java Center] 12-8 ‘Suma = 23 Producto = 120 En este caso os valores con los que debe operar el método se pasan como pardmetros.. '8.6.- OCULTANDO LOS DATOS Uno de los fundamentos de la programacin orientada a objetos es que el usuario solo debe tener ‘acceso a los datos que le son de su interés, y del modo que le corresponde, por ejemplo solo lectura, solo escritura, 0 ambos. Para conseguir esto se debe implementar los atributos como privades, y se debe Implementar métodos para acceder a ellos, existe un esténdar para definir este método, por ejemplo y sil atributo es nombre, los métados son: setNombre | Este método permite asignar una valor al atributo. ‘getNombre | Este método permite leer el valor del atributo, Como puede apreciar existen dos prefijs, el prefijo set que se utiliza para asignar un valor al atributo vel prefiio get para leer el valor del atributo, de esta manera podemos seleccionar si se implementa e| metodo set, get, o ambos, y restringir el nivel de acceso alos datos. tra posiblidad que nos da la implementacién de estos métodos es de poder agregar funcionalidad {que puede servir para verifcar por ejemplo siel dato que se esta signando es correcto ono. ro umeunebemnocmaMaconsa Ejemplo 8.4 En el siguiente ejemplo se ilustra el uso de métodos para acceder alos campos de un objeto, la definicién de la clase de jlustra en la Figura 8.7. “Articulo2 aa + nombre > precast prevent + satcadign (in] aCadigo ) + satonbre (hl sombre ) + serprecosta ( fr] acacia ) getCodign ( ) + gatvorére ¢ ) + geerecaste ( ) ++ getraventa () Figura 8.7 Clase Articulo2. La implementacién de la clase Articulo2 se llustra a continuacién: [ Articulo2.java ee) d PXVIFIAIIIIIIDIIIIIIID J +7) Compilacién y ejecucién: Como se puede apreciar el precio de venta se calcula de manera automética cuando establecemos el precio de costo, esto debido a que utlizamos un método para asignar el precio de costo, por otro lado €! precio de venta solo puede ser lefdo (solo lectural, mas no existe manera alguna de cambiar su valor, a menos que cambiemos el precio de costo. Lasobrecarga permite defini doso més métodos que comparten el mismo nombre, perola declaracién de sus parémetros debe ser diferente. Esta es una de las caracteristicas muy importante de la POO, y por o tanto también de Java. Cuando se invoca a un método sobrecargado, Java utiliza el tipo y/o ndmerd'de pardmetros como ‘tuia para determinar a que versién del método sobrecargado debe llamar. Por lo tanto, los métodos sobrecargados deben ser diferentes en el tipo y/o nlimero de parémetros. Ejemplo 8.5 En este ejemplo ilustraremos el uso de la sobrecarga, para lo cual implementaremos una clase que ppermita convertir a String un numero, dependiendo el tipo de numero se ejecutard el método que le corresponde. |+convert(n: long): String convent float): Sting | +convertin: double): String | Figura 8.8 Case MyConvert con una func sobrecargada. La clase que se utlizaré para esta demostracién es MyConvert, tal como se aprecia en la Figura 8.8, ‘tenemos el método convert sobrecargado. ‘A continuacién tenemos la implementacién de la clase MyConvert: ) PIII IVI) >.) »>d)) El programa que ilustra el uso de esta clase es el siguients En este caso al invocar al método convert con datos de diferentes tipos, internamente se ejecutard el _método que corresponde segiin el tipo de dato del pardmetro que le pasamos. Los constructores permiten inicializar un objeto inmediatamente después de su creacién, tienen el ‘mismo nombre que la clase donde se encuentra y sintdcticamente son similares de los métodos. Sintaxis Eleonstructor se invoca cuando creamos el objeto, junto con el operador new. los constructoes tienen el mismo nombre de la case, yno tienen tipo, esto debido a que retornan el ‘mismo tipo de a clas, el objetivo principal de un constructor es iniilizarel estado interno de objet. Ejemplo 8.6 En este ejemplo crearemos una clase de nombre Empleado, que tiene un constructor que inicializa sus atributos. Empleade: [-nombre: String |-suelda: double LLedad: int +Empleado( ) -+getNombre{ ): String] |+getSueldo( ) double [+neté deol): int Figura 8.9 Clase Empleado con un constructor A continuacién tenemos la implementacién de la clase Empleado, aqu' puede apreciar que el constructor tiene el mismo nombre que la clase. PIIIIDIIIIDYD ) PIPIVIIDIID dd) » 29) E! programa que ilustra el uso de esta clase es el siguiente, puede notar que el constructor se invoca Junto con el operador new. Compilacién y ejecucién: CONSTRUCTORES CON PARAMETROS Los constructores pueden resultar mas itiles si tienen parémetros, en nuestro ejemplo de la clase Empleado, resulta que no todos los empleados se llaman Claudia, el Ejemplo 8.7 ilustra el uso de constructores con parémetros. 78 umvcunsebsenocmamaconsnvn Ejemplo 8.7 El siguiente ejemplo ilustra el uso de constructores con-pardmetros, la clase utlizada es Empleados. Empleadot [-nombre: Sting |-sueldo: double [edad int [+Empleada(nombre: Sting, sueldo: double, edad inty | +aetNomere( ): String |*9etSueldot ) double |+pettdadl )int Figura 8.10 Clase Empleadot con un constructor con parémetros. ‘Acontinuacién tenemos la implementacién de la clase Empleadot. El constructor de esta clase permite iniialzar los objetos con diferentes datos, asi podemos tener un ‘objeto para cada empleado. Seeman El programa que ilustra el uso de esta clase es el siguiente: Puede notar que el constructor se invoca junto con el operador new y es en esa Instruccién que se le ppasa los datos para que inicialice el objeto. Compilacién y ejecucion: Podemos concluir que cada vex que se crea un objeto se puede inicialzar con datos diferentes que correspondan a distintes empleados. SOBRECARGA DE CONSTRUCTORES Al igual que los métodos, los constructores también pueden ser sobrecargados, esto quiere decir, que podemos tener diferentes constructores dependiendo de los datos de los que disponemos. Ejemplo 8.8 En este ejemplo se ilustra como 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 8.21. [nombre Sig, |suelda.covsle [eae int feEmpleacaombre Srna, suet: doce eed [sEmpleado{ nombre Stina, sueco: dole) [sEmpleacodomtce: Sono edad), }-Ermplescoz(nomtre: Sting) lrgehNorbre() Sg lsgetsueio()couble getEded Figura 8.11 Clase Empleado2 con constructor sobrecargado. re PcuneepROMRCoNAVA Los datos de un empleado son: nombre, sueldo y edad, cuando falta elsueldo se asumeun sueldo base ‘que esta definido en SUELDO_BASE, y cuando falta la edad se asume cero. ‘A continuacién tenemos la implementacién de la clase Empleado2: i ) VIII)? ) III ¥ PIIIIIIDD A>VIIIYD a) PAV J ey) El programa ilustrativo para el uso de esta clase es: Del resultado obtenido podemos deducir que a Ricardo se le asigno el sueldo base debido que no se le ‘especifico su sueldo al momento de crear el objeto, en el caso de Sergio solo se especifco su nombre, por lo tanto se le asigno el sueldo base y edad cero.

También podría gustarte

  • 1.-Clases y Objetos
    1.-Clases y Objetos
    Documento20 páginas
    1.-Clases y Objetos
    norbertonorberto
    Aún no hay calificaciones
  • BOSQUEJOS
    BOSQUEJOS
    Documento385 páginas
    BOSQUEJOS
    norbertonorberto
    100% (1)
  • Introduccion
    Introduccion
    Documento4 páginas
    Introduccion
    norbertonorberto
    Aún no hay calificaciones
  • Introduccion
    Introduccion
    Documento4 páginas
    Introduccion
    norbertonorberto
    Aún no hay calificaciones
  • Como Alargar El Cable Vga Del Monitor
    Como Alargar El Cable Vga Del Monitor
    Documento17 páginas
    Como Alargar El Cable Vga Del Monitor
    Luis Alvarado
    Aún no hay calificaciones
  • Apuntes CSS
    Apuntes CSS
    Documento6 páginas
    Apuntes CSS
    norbertonorberto
    Aún no hay calificaciones
  • (2010-04-09) - EntityFramework PDF
    (2010-04-09) - EntityFramework PDF
    Documento45 páginas
    (2010-04-09) - EntityFramework PDF
    augustogarciaduarte
    Aún no hay calificaciones
  • Tutorial Sencillo de AngularJS
    Tutorial Sencillo de AngularJS
    Documento17 páginas
    Tutorial Sencillo de AngularJS
    norbertonorberto
    Aún no hay calificaciones
  • Apuntes CSS
    Apuntes CSS
    Documento6 páginas
    Apuntes CSS
    norbertonorberto
    Aún no hay calificaciones
  • Limpieza Hepatica
    Limpieza Hepatica
    Documento5 páginas
    Limpieza Hepatica
    Alejandro Martínez
    Aún no hay calificaciones
  • Wholesite PDF
    Wholesite PDF
    Documento157 páginas
    Wholesite PDF
    Dolores Ayala Muñoz
    Aún no hay calificaciones
  • Tipos de Datos
    Tipos de Datos
    Documento1 página
    Tipos de Datos
    norbertonorberto
    Aún no hay calificaciones
  • DBPersona
    DBPersona
    Documento1 página
    DBPersona
    norbertonorberto
    Aún no hay calificaciones
  • Recursividad
    Recursividad
    Documento1 página
    Recursividad
    norbertonorberto
    Aún no hay calificaciones
  • Avance 3rq Semana
    Avance 3rq Semana
    Documento3 páginas
    Avance 3rq Semana
    norbertonorberto
    Aún no hay calificaciones
  • Session Es
    Session Es
    Documento1 página
    Session Es
    norbertonorberto
    Aún no hay calificaciones
  • Examen Programacion Web
    Examen Programacion Web
    Documento2 páginas
    Examen Programacion Web
    norbertonorberto
    Aún no hay calificaciones
  • Pilas
    Pilas
    Documento3 páginas
    Pilas
    norbertonorberto
    Aún no hay calificaciones
  • Listas
    Listas
    Documento2 páginas
    Listas
    norbertonorberto
    Aún no hay calificaciones
  • Vectores y Matrices
    Vectores y Matrices
    Documento6 páginas
    Vectores y Matrices
    norbertonorberto
    Aún no hay calificaciones
  • Apuntes Mysql
    Apuntes Mysql
    Documento3 páginas
    Apuntes Mysql
    norbertonorberto
    Aún no hay calificaciones
  • Apuntes C Sharp
    Apuntes C Sharp
    Documento1 página
    Apuntes C Sharp
    norbertonorberto
    Aún no hay calificaciones
  • Colas
    Colas
    Documento3 páginas
    Colas
    norbertonorberto
    Aún no hay calificaciones
  • Pseudocodigo
    Pseudocodigo
    Documento3 páginas
    Pseudocodigo
    norbertonorberto
    Aún no hay calificaciones
  • Apuntes C Sharp
    Apuntes C Sharp
    Documento1 página
    Apuntes C Sharp
    norbertonorberto
    Aún no hay calificaciones
  • Ley 1178 Ultimo
    Ley 1178 Ultimo
    Documento140 páginas
    Ley 1178 Ultimo
    norbertonorberto
    Aún no hay calificaciones
  • Eco y Oferta Demanda y Equilibrio
    Eco y Oferta Demanda y Equilibrio
    Documento50 páginas
    Eco y Oferta Demanda y Equilibrio
    asrere
    Aún no hay calificaciones
  • Ley 1178 Ultimo
    Ley 1178 Ultimo
    Documento140 páginas
    Ley 1178 Ultimo
    norbertonorberto
    Aún no hay calificaciones
  • Tipos de Datos
    Tipos de Datos
    Documento1 página
    Tipos de Datos
    norbertonorberto
    Aún no hay calificaciones