
















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Objetos, Clases, Atributos, Métodos, Modificadores de Acceso, Encapsulamiento, Polimorfismo, Herencia.
Tipo: Guías, Proyectos, Investigaciones
1 / 24
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
En POO un Objeto es la representación de un elemento, a nivel de hardware consiste en un espacio de memoria RAM que se define para el cargue de datos, cuando un objeto se crea se genera un apuntador a este espacio de memoria que sirve como referencia. Los objetos son inmutables, esto quiere decir que su información original no se puede modificar, solo se cambia el apuntador a otro espacio de memoria cuando el objeto cambia sus datos. A nivel de software, los objetos generan instancias hacia las Clases, una instancia es una relación que permite hacer uso de las características (atributos) y acciones (métodos) que se encuentran definidos dentro de ella. Instancia Figura. 01 – Instancia de un Objeto a una Clase Cuando se desarrolla algún software, se suele hablar de dos tiempos: tiempo de codificación y tiempo de ejecución. El primero hace referencia al tiempo de escritura del código fuente, aquí el desarrollador codifica una solución en un lenguaje de programación a través de una herramienta de desarrollo. El segundo hace referencia al tiempo en el que la solución o programa se ejecuta. Con respecto a estos dos tiempos, es importante aclarar que un Objeto puede comportarse de una forma en tiempo de codificación y de otra forma en tiempo de ejecución, estos conceptos se ampliaran en la sección 2.6. Polimorfismo.
Las Clases son plantillas que contienen en su interior atributos y métodos. Los atributos son características propias de la Clase y los métodos son acciones que puede realizar la Clase. En UML una Clase se representa gráficamente con un rectángulo que tiene en su interior tres divisiones. En la parte superior está el nombre de la Clase, en la parte central están los atributos (o características) y en la parte inferior están los métodos (o acciones). Una Clase por si sola no desarrolla ninguna función, para que sus atributos y métodos sean útiles, es necesario crear un Objeto con su respectiva instanciación. ClaseClase ObjetoObjeto
Clase atributo metodo() Figura. 02 – Representación gráfica de una Clase Una buena práctica de desarrollo de software consiste en definir las clases, atributos y métodos con un estándar de programación, en este libro hablaremos de los estándares PascalCase y camelCase. El estándar PascalCase generalmente se utiliza en el nombre de las clases y consiste en dejar la primera letra de cada palabra en mayúscula, sin espacios ni caracteres especiales. Ejemplos: C iudad C ontrol U suario E mpleado T iempo C ompleto El estándar camelCase generalmente se utiliza en el nombre de los atributos y los métodos, consiste en dejar la primera letra de la primera palabra en minúscula, pero la primera letra de las siguientes palabras en mayúsculas, sin espacios ni caracteres especiales. Ejemplos: e dad n ombre g uardar() m odificar U suario() v alidar F ormulario V enta() A continuación, se define una clase con sus respectivos atributos y métodos: Perro
La clase Perro contiene en su interior tres métodos, el primer método es comer y está definido con el modificador de acceso público (+), el segundo método es tamanio y su modificador de acceso es protegido (#) y el tercero método es color y está definido con el modificador de acceso privado (-). Los métodos pueden tener parámetros de entrada y salida, los primeros se definen con paréntesis () y van después del nombre del método y los segundos se definen con la palabra reservada void o un tipo de dato y se encuentran antes del nombre del método. Cuando un método tiene la palabra reservada void indica que NO tiene parámetros de salida, pero si tiene un tipo de dato entonces indica que SI tiene parámetros de salida. Si el método tiene parámetros de salida es necesario adicionar la palabra reservada return y enviar el valor a retornar que debe ser del mismo tipo de dato definido. Ejemplo 1: public void comer(){ } Ejemplo 2: public String correr(int edad){ return “estoy corriendo”; } En el Ejemplo 1 se observa el método comer() que no tiene parámetros de entrada porque los paréntesis están vacíos, tampoco tiene parámetros de salida porque tiene la palabra reservada void. En el Ejemplo 2 se observa el método correr() que tiene un parámetro de entrada denominado edad y es del tipo de dato entero (int) y también tiene un parámetro de salida de tipo cadena (String), observe que en la parte inferior del método se retorna la cadena “estoy corriendo” para el parámetro de salida String.
En general existen cuatro tipos de métodos, estos son: Método Parámetros de Entrada Parámetros de Salida metodoUno No No metodoDos Si No metodoTres No Si metodoCuatro Si Si Tabla. 01 – Tipos de Métodos En la tabla se observa el metodoUno que no tiene parámetros ni de entrada ni de salida, esto quiere decir que los paréntesis están vacíos y tiene la palabra reservada void en la salida. El metodoDos tiene parámetros de entrada, pero no tiene parámetros de salida, esto quiere decir que dentro de los paréntesis existen elementos, pero tiene la palabra reservada void en la salida. El metodoTres no tiene parámetros de entrada, pero si tiene parámetros de salida, esto quiere decir que los paréntesis están vacíos, pero en la salida lleva un tipo de dato en lugar de la palabra reservada void. El metodoCuatro tiene parámetros de entrada y salida, esto quiere decir que los paréntesis tienen elementos y en la salida existe un tipo de dato diferente a la palabra reservada void.
En el ejemplo se va a generar la clase Perro diagramada en la sección 2.2. Clases. El lenguaje de programación utilizado es Java. Figura. 04 – Ejemplo de clase Perro en el Lenguaje de Programación Java
En la figura se observa el metodoUno sin parámetros de entrada porque los paréntesis se encuentran vacíos y sin parámetros de salida porque tiene la palabra reservada void. Su definición se ha realizado con el modificador de acceso público (public).
Figura. 06 – Código fuente en Java de un método con parámetros de entrada, pero sin parámetros de salida En la figura se observa el metodoDos con un parámetro de entrada denominado nombre cuyo tipo de dato es cadena (String), pero sin parámetros de salida porque tiene la palabra reservada void. Su definición se ha realizado con el modificador de acceso público (public).
Figura. 07 – Código fuente en Java de un método sin parámetros de entrada, pero con parámetros de salida En la figura se observa el metodoTres sin parámetros de entrada porque los paréntesis están vacíos, pero con un parámetro de salida de tipo cadena (String), teniendo en cuenta su parámetro de salida se hace obligatorio retornar la cadena “mensaje”. Su definición se ha realizado con el modificador de acceso público (public).
Figura. 08 – Código fuente en Java de un método con parámetros de entrada y con parámetros de salida En la figura se observa el metodoCuatro con el parámetro de entrada nombre de tipo de dato cadena (String) y el parámetro de salida de tipo cadena (String), teniendo en cuenta su parámetro de salida se hace obligatorio retornar la cadena “mensaje”. Su definición se ha realizado con el modificador de acceso público (public).
Los modificadores de acceso definen la forma como podemos acceder a los atributos y métodos definidos en una Clase. Existen muchos modificadores de acceso, los más comunes con el Público representado por el más (+), el Protegido representado por el número (#) y el Privado representado por el (-), para entender cada uno de ellos es necesario definir qué es un Paquete. Un paquete es una carpeta o directorio que en su interior puede tener una o muchas clases, para que un paquete exista debe haber al menos una clase. El modificador de acceso Público permite que el atributo o método se pueda utilizar desde la misma clase, otra clase que se encuentra dentro del mismo paquete y una clase que pertenece a un diferente paquete. Figura. 09 – Modificador de Acceso Público En la figura se observa el PaqueteA y el PaqueteB, dentro del PaqueteA se encuentran las clases Perro y la ClaseA; dentro del PaqueteB se encuentra la ClaseB. Teniendo en cuenta que el atributo raza y el método comer() están definidos con el modificador de acceso público, la ClaseA y la ClaseB acceden a través de un objeto a ellos desde una PaqueteA PaqueteB Perro
Figura. 11 – Modificador de Acceso Privado En la figura se observa el PaqueteA y el PaqueteB, dentro del PaqueteA se encuentran las clases Perro y la ClaseA; dentro del PaqueteB se encuentra la ClaseB. Teniendo en cuenta que el atributo color y el método correr() están definidos con el modificador de acceso privado, no se pueden acceder desde otras clases del mismo paquete ni desde otras clases de diferentes paquetes, por el alcance del modificador de acceso que está diseñado solo para el uso sobre la misma clase En conclusión, el modificador de acceso público permite hacer uso de los atributos y métodos desde cualquier alcance. El modificador de acceso protegido solo para la misma clase o clases que pertenezcan al mismo paquete y el modificador de acceso privado solo para la misma clase. Modificador de acceso Misma Clase Otra Clase del mismo paquete Una clase de diferente paquete Público (+) Si Si Si Protegido (#) Si Si No Privado (-) Si No No Tabla. 02 – Alcance de los modificadores de acceso público, protegido y privado Es importante aclarar que existen otros modificadores de acceso que también permiten hacer uso de los atributos y métodos definidos en la clase, estos son: Default Static El modificador de acceso Default no tiene ninguna palabra reservada, se puede utilizar sobre la misma clase o sobre otra clase que pertenezca al mismo paquete, pero no tiene alcance para ninguna clase que se encuentre en un paquete diferente. El modificador de acceso Static se define con la misma palabra reservada (static) y se puede utilizar sobre la misma clase o sobre otra clase que pertenezca al mismo paquete, pero no tiene alcance desde clases que se encuentren en otro paquete. La principal diferencia con el modificador de acceso por defecto consiste en su utilización, porque no es necesario generar una instanciación (creación de un objeto), solo basta con escribir el nombre de la clase y luego llamar el respectivo método estático. Modificador de acceso Misma Clase Otra Clase del mismo paquete Una clase de diferente paquete Default Si Si No Static Si (sin instanciación) Si (sin instanciación) No Tabla. 03 – Alcance de los modificadores de acceso default y static
Ahora observaremos ejemplos de los modificadores de acceso: público, protegido, privado, default y estático en el lenguaje de programación Java.
Figura. 12 – Modificador de Acceso Público en Java En la figura 12 se observa la clase Perro con el atributo público (public) raza y el método público (public) comer. El atributo está definido con el tipo de dato String, el método comer no tiene parámetros de entrada ni de salida. En su interior el método imprime el mensaje “Soy Comer…”. Figura. 13 – ClaseA instanciando el Modificador de Acceso Público en Java En la figura 13 se observa la ClaseA del PaqueteA que contiene en su interior el método principal o main, dentro del método se instancia la clase Perro a través del objeto y se hace referencia al atributo raza que se la asigna el valor “Pastor” y al método comer que se encuentran definidos en la clase Perro.
Figura. 16 – ClaseA instanciando el Modificador de Acceso Protegido en Java En la figura 16 se observa la ClaseA del PaqueteA que contiene en su interior el método principal o main, dentro del método se instancia la clase Perro a través del objeto y se hace referencia a el atributo tamanio que se la asigna el valor “Mediano” y al método ladrar que se encuentran definidos en la clase Perro. Figura. 17 – ClaseB instanciando el Modificador de Acceso Protegido en Java En la figura 17 se observa la ClaseB del PaqueteB que contiene en su interior el método principal o main, dentro del método se instancia la clase Perro a través del objeto, pero teniendo en cuenta el alcance del modificador protegido, no se puede hacer uso ni del atributo ni del método definido en la clase Perro del PaqueteA.
Figura. 18 – Modificador de Acceso Privado en Java En la figura 18 se observa la clase Perro con el atributo privado (private) color y el método privado (private) correr. El atributo está definido con el tipo de dato String, el método correr no tiene parámetros de entrada ni de salida. En su interior el método imprime el mensaje “Soy correr…”. Figura. 19 – ClaseA instanciando el Modificador de Acceso Privado en Java En la figura 19 se observa la ClaseA del PaqueteA que contiene en su interior el método principal o main, dentro del método se instancia la clase Perro a través del objeto, pero teniendo en cuenta el alcance del modificador privado, no se puede hacer uso ni del atributo ni del método definido en la clase Perro del PaqueteA.
Figura. 22 – ClaseA instanciando el Modificador de Acceso Default en Java En la figura 22 se observa la ClaseA del PaqueteA que contiene en su interior el método principal o main, dentro del método se instancia la clase Perro a través del objeto y se hace referencia al atributo color que se la asigna el valor “Cafe” y al método correr que se encuentran definidos en la clase Perro. Figura. 23 – ClaseB instanciando el Modificador de Acceso Default en Java En la figura 23 se observa la ClaseB del PaqueteB que contiene en su interior el método principal o main, dentro del método se instancia la clase Perro a través del objeto, pero teniendo en cuenta el alcance del modificador privado, no se puede hacer uso ni del atributo ni del método definido en la clase Perro del PaqueteA.
Figura. 24 – Modificador de Acceso Estático en Java En la figura 24 se observa la clase Perro con el atributo estático (static) color y el método estático (static) correr. El atributo está definido con el tipo de dato String, el método correr no tiene parámetros de entrada ni de salida. En su interior el método imprime el mensaje “Soy correr…”. Figura. 25 – ClaseA utilizando el Modificador de Acceso Estático en Java En la figura 25 se observa la ClaseA del PaqueteA que contiene en su interior el método principal o main, dentro del método se hace uso directo del atributo color y el método correr que se encuentran definidos en la clase Perro sin necesidad de crear alguna instanciación. Solo es necesario definir el nombre de la clase y hacer la referencia al atributo o método que deseo utilizar.