Course: Programación II
Date: February 12, 2023 6:00 PM Status: Done Year: 2022
- Clases
- Cómo se define una clase? ↓
- La clase es un modelo que describe las características comunes y el comportamiento de un conjunto de objetos (instancias de una clase).
- Es la descripción de una familia de objetos con una misma estructura y un mismo comportamiento.
- Se caracteriza por:
- Un nombre
- Un componente estático: __ los atributos __ (o campos) a los que se les atribuyen valores. Estos caracterizan el estado de los objetos durante la ejecución del programa.
- Un componente dinámico: __ los métodos __ que representan el comportamiento de los objetos de la clase. Estos manipulan los valores de los atributos y caracterizan las acciones que pueden ser realizadas por los objetos.
- Las clases son estáticas; sin embargo, su existencia, semántica y significado están fijados antes de la ejecución de un programa.
- Cuál es la funcionalidad del operador new ? ↓
- El uso del operador __ __ new __ __ origina la siguiente secuencia de acciones:
- la asignación de memoria necesaria para guardar el objeto.
- la inicialización de sus atributos por defecto.
- la ejecución de un constructor
- la inicialización explícita de los atributos (si existe esta acción).
- El uso del operador __ __ new __ __ origina la siguiente secuencia de acciones:
- Qué es un constructor? ↓
- Un constructor es un método de inicialización.
- El constructor es un método que:
- Tiene el mismo nombre que la clase.
- No tiene valor de retorno y tampoco es __ __ void __ __
- Todas las clases tienen, al menos, un constructor.
- Si no se escribió explícitamente un constructor, existe uno por defecto, sin parámetros y sin código.
- Qué son las variables de clase o estáticas ? ↓
- Son propias únicamente de la clase y no de los objetos que pueden crearse de la misma, por lo tanto, sus valores son compartidos por todos los objetos de la clase. Van precedidas del modificador __ __ *** **** __ __ static __ __ .
- Para invocar a una variable estática no se necesita crear un objeto de la clase en la que se define:
- Si se invoca desde la clase en la que se encuentra definido, basta con escribir su nombre.
- Si se le invoca desde una clase distinta, debe anteponerse a su nombre, el de la clase en la que se encuentra seguido del operador punto (.):
- < __ NombreClase __ >. __ variableEstatica __
- En qué consiste el concepto de encapsulamiento? ↓
- El encapsulamiento busca de alguna forma controlar el acceso a los datos que conforman un objeto o instancia, de este modo podríamos decir que una clase y por ende sus objetos que hacen uso de modificadores de acceso (especialmente privados) son objetos encapsulados.
- Qué son los métodos __getter __ y setter ? ↓
- Los métodos __ getter __ y __ setter __ son métodos de acceso. Son una interfaz pública para cambiar u obtener el valor los atributos privados. Son siempre públicos.
- Setters: Sirven para asignar un valor inicial a un atributo. Siempre son void (nunca retornan valor)
- *Getters: **se utiliza para obtener, recuperar u obtener el valor de un atributo.
- Según la POO, qué es un método? ↓
- En la POO, los métodos son análogos a los procedimiento o funciones en los lenguajes procedimentales o estructurados.
- Un método es, fundamentalmente, un conjunto, lógicamente integrado, de instrucciones para realizar una tarea específica y que puede ser reutilizado.
- Los métodos pueden recibir valores por medio de sus parámetros y devolver un valor por medio de la sentencia return*.**
- Qué son los modificadores ? ↓
- Permiten controlar la visibilidad y acceso a los métodos y variables que están dentro de una clase.
- Java soporta cuatro niveles de acceso a variables y métodos. En orden, del más público al menos público son:** público (public), protegido (protected), sin modificador y privado (private). **
- Cómo se define una clase? ↓
- Objetos
- Qué es una instancia o un objeto? ↓
- Es la representación física de una clase.
- Se asigna memoria al objeto.
- Los atributos pueden tomar valores.
- El comportamiento está definido por los métodos de su clase.
- __ “instancia __ ” = __ “objeto __ “.
- Qué es un atributo? ↓
- Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades.
- Los atributos se guardan en variables y cada objeto particular puede tener valores distintos para estas variables. Una vez instanciado el objeto, los atributos toman valores por defecto.
- La referencia en Java es, de alguna manera, un puntero.
- Qué son las variables de instancia ? ↓
- Son las variables que tendrán diferentes valores con cada una de las instancias que se generan al crear objetos nuevos de la clase.
- Se define como privada, para que no se pueda modificar desde otra clase, solo a través de los métodos __ getter __ y __ setter __ .
- Puede ser definida como pública y en ese caso no se requiere de hacer uso de algún método para tomar su valor o modificarla (no es recomendable por el control de la variable por la misma clase).
- Qué es el estado de un objeto? ↓
- El estado de un objeto abarca todas las propiedades del objeto, y los valores actuales de cada una de esas propiedades.
- Las propiedades de los objetos suelen ser estáticas, los valores que toman estas propiedades cambian con el tiempo.
- El hecho de que los objetos tengan estado implica que ocupan un espacio de memoria.
- Qué es el Garbage Collector? ↓
- El Garbage Collector es el administrador de espacio de memoria dinámico propio de Java, que trabajo con el Stack y el Heap
- El Stack (Pila) se utiliza para almacenar variables locales, variables de referencia, parámetros y valores de retorno, resultados parciales. También se utiliza para llevar el control de la invocación y retorno de los métodos.
- El Heap (Montículo) almacena objetos y sus variables de instancia. Es un espacio de memoria dinámica que se crea al inicio de la máquina virtual y es único.
![https://remnote-user-data.s3.amazonaws.com/NTWr7tAUhnUT3POCKEdhqI-GH-QqON3DvhN6NdUOg-baRhk-6AtBkYbt8fX2uP4XukDt5Hz697omN62BLvlXJOi9E4WfxVb_-CEtsAVG5BmMUVj1Bb3qlaR4JhId9d9j.png](https://remnote-user-data.s3.amazonaws.com/NTWr7tAUhnUT3POCKEdhqI-GH-QqON3DvhN6NdUOg-baRhk-6AtBkYbt8fX2uP4XukDt5Hz697omN62BLvlXJOi9E4WfxVb_-CEtsAVG5BmMUVj1Bb3qlaR4JhId9d9j.png)
- El Garbage Collector es el administrador de espacio de memoria dinámico propio de Java, que trabajo con el Stack y el Heap
- Cuál es la diferencia entre pasar argumentos por valor o por referencia? ↓
- Por valor: cuando los argumentos son pasados por valor a los métodos, significa que se realiza una copia de la variable y esta es enviada al método y no la original, entonces todo los cambios realizados dentro del método solo afectan a la copia actual.
- Por referencia: cuando los argumentos son pasados por referencia, significa que la referencia o el puntero a la variable original son pasadas a los métodos y no la data original.
- En Java, cómo son pasados los parámetros? ↓
- Java implementa sólo un modo de pasaje de parámetros a un método: ** por valor**. Esto significa que:
- El valor del argumento pasado a un método no puede ser modificado.
- Si el argumento es una instancia (objeto), es ésta referencia que es pasada por valor. Así el contenido del objeto puede ser modificado pero no la referencia.
- Java implementa sólo un modo de pasaje de parámetros a un método: ** por valor**. Esto significa que:
- En qué consiste la clonación de objetos? ↓
- La clonación es el proceso de duplicación de un objeto para que en memoria existan dos objetos idénticos en el mismo instante de tiempo
- La clase java.lang.Object contiene una implementación native y protected del método clone.
- Esta implementación (que depende de la máquina sobre la que se ejecute el código) determina cuanta memoria está siendo usada por el objeto a ser clonado, reserva la misma cantidad de memoria para el objeto clon, y copia los valores de memoria de la vieja dirección de memoria a la nueva. Y al final se devuelve un java.lang.Object el cual es la referencia al nuevo objeto (el clon).
- Qué es una instancia o un objeto? ↓
- Relación de Uso entre Clases
-
Qué es una relación de uso ? ↓
- La relación de _ _ uso _ _ entre clases es una de los tipos de relación más habituales en programación orientada a objetos. Las variables de instancia de un objeto pueden ser tanto de tipo primitivo como **tipo ** _ _ objeto _ _ .
- La variable que define un objeto no contiene al objeto en sí mismo, sino una referencia al espacio de memoria donde se encuentra.
- Un objeto puede crearse e invocar sus métodos públicos desde distintas clases y decimos que esto establece _ _ una relación de uso entre clases _ _ .
-
Cómo se define una relación de agregación? ↓
- Representa una relación del tipo ” _ tener un _ ” entre clases.
- Cuando la clase contenida no existe independientemente de la clase que la contiene se denomina agregación _ por valor _ y además implica contenido físico, mientras que si existe independientemente y se accede a ella indirectamente, es agregación _ por referencia _ .
-
Cuáles son los tipos de clases anidadas en Java? ↓
- Clase anidada interna.
- Clase anidada estática.
- Clase local.
- Clase anónima
-
Qué es una clase anidada interna ? ↓
- Se dice que es interna si se la declara dentro de otra clase pero fuera de cualquier método de la clase contenedora.
- Puede declararse con cualquiera de los modificadores: private, protected o public
- Tiene acceso a todos los atributos de la clase que la contiene, luego para que exista una clase anidada interna es necesario que exista un objeto de la clase contenedora.
![https://remnote-user-data.s3.amazonaws.com/kOfGgb_XlXYcZKHEAdUqOJGdDGuLREjaFifZQmRv2h7bBkOixmcvZvNdboC5yY1jgoznJeV_Eg539pt6jWUVnlmiCvJpvIuINz1Le2mf0uQPsf8PXZR0V-SNVsRpPKfc.png](https://remnote-user-data.s3.amazonaws.com/kOfGgb_XlXYcZKHEAdUqOJGdDGuLREjaFifZQmRv2h7bBkOixmcvZvNdboC5yY1jgoznJeV_Eg539pt6jWUVnlmiCvJpvIuINz1Le2mf0uQPsf8PXZR0V-SNVsRpPKfc.png)
-
Qué es una clase anidada estática ? ↓
- En Java podemos definir clases internas con el modificador ‘static’. Luego la clase interna se comporta como una clase normal de Java con la salvedad que se encuentra dentro de otra.
- Cuando declaramos una clase interna ‘static’ luego podemos crear objetos de la misma en forma independiente a la clase externa
![https://remnote-user-data.s3.amazonaws.com/LjVx3IV71dHFJE_eye_L9hEgkSl-vCxJOB5OF7tcOw5wpHqa_cNDN2-nIsHFKjardGPl2o_G3BRKJAASagY2wJZJz_YyC8TYf5uF4EEqd9nJZ95QCsrUVBrAt7itXLDw.png](https://remnote-user-data.s3.amazonaws.com/LjVx3IV71dHFJE_eye_L9hEgkSl-vCxJOB5OF7tcOw5wpHqa_cNDN2-nIsHFKjardGPl2o_G3BRKJAASagY2wJZJz_YyC8TYf5uF4EEqd9nJZ95QCsrUVBrAt7itXLDw.png)
-
Qué es una clase anidada local ?
- El lenguaje Java permite declarar una clase local a un método o inclusive a un bloque dentro de un método.
- La clase local tiene acceso a los métodos y atributos de la clase externa, variables locales y parámetros del método donde se la declara
![https://remnote-user-data.s3.amazonaws.com/315eCRmHY3Srb9Tp_PjeRzZmGJv72qTtQ2vLv18M5AsCL40u_pvP09i457bvPGgfcy7Tux5_OCSWEb51Lyq25uGaeAH0QmPpvQc_sbJNoZT0YmQiwT_H7O0CtvKMqjDY.png](https://remnote-user-data.s3.amazonaws.com/315eCRmHY3Srb9Tp_PjeRzZmGJv72qTtQ2vLv18M5AsCL40u_pvP09i457bvPGgfcy7Tux5_OCSWEb51Lyq25uGaeAH0QmPpvQc_sbJNoZT0YmQiwT_H7O0CtvKMqjDY.png)
-
Qué es una clase anidada anónima ?
- Las clases anónimas en Java son clases anidadas sin un nombre de clase. Normalmente se declaran como una subclase de una clase existente o como la implementación de una interfaz
-