Herramientas de usuario

Herramientas del sitio


bloque4:clasesobjetos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
bloque4:clasesobjetos [05/03/2018 10:58] – [Inicialización de atributos de una clase] Fernando Valdeónbloque4:clasesobjetos [05/03/2018 11:34] (actual) – borrado Fernando Valdeón
Línea 1: Línea 1:
-====== Clases y Objetos ====== 
- 
-===== Clase ===== 
- 
-===== Objeto ===== 
- 
-===== Instanciar una clase: Constructores ===== 
- 
-===== Variables de referencia ===== 
- 
-===== Modificadores de visibilidad o acceso ===== 
- 
-===== Métodos getters y setters ===== 
- 
-===== Palabra reservada: this ===== 
- 
-===== Sobrecarga de métodos y constructores ===== 
- 
-===== Modificador static ===== 
- 
-===== Inicialización de atributos de una clase ===== 
-Desde el punto de vista del lugar donde se declaran existen dos tipos de variables: 
-  * **Variables miembro**: Se declaran en una clase, fuera de cualquier método. 
-  * **Variables locales**: Se declaran y usan en un bloque de código dentro de un método. 
- 
-Las variables miembro son inicializadas automáticamente, de la siguiente forma: 
-  * Las **numéricas** a 0. 
-  * Las **booleanas** a false. 
-  * Las **char** al caracter nulo (hexadecimal 0). 
-  * Las **variables de referencia** a null. 
- 
-Las variables miembro pueden inicializarse con valores distintos de los anteriores en su constructor. 
-Las variables locales (de ámbito local) no se inicializan automáticamente. Se les debe asignar un valor antes de ser usadas. 
- 
- 
-===== Recolector de basura ===== 
-Cuando ya no se necesita un objeto simplemente puede dejar de referenciarse. No existe una operación explícita para 'destruir' un objeto o liberar el área de memoria usada por él. 
- 
-Un objeto deja de referenciarse cuando no hay ninguna variable de referencia dentro del programa que contenga su valor de referencia: 
-<code java> 
-Coche miCoche = new Coche(); 
-miCoche = null; //He perdido el valor de la referencia al objeto 
- 
-//Otro ejemplo: 
-Coche miCoche = new Coche(); 
-miCoche = new Coche(); //Pierdo la referencia del objeto anterior 
-</code> 
- 
-Una variable solo puede contener un valor, y cuando no hay nada que guarde la referencia a un objeto, lo habré perdido para siempre. 
- 
-La liberación de memoria la realiza el recolector de basura (garbage collector), que es una función de la JVM (Java Virtual Machine). El recolector revisa toda el área de memoria del programa y determina qué objetos pueden ser borrados de la memoria __porque ya no tienen referencias activas que los apunten__. 
- 
-El recolector de basura actúa cuando la JVM lo determina (tiene un mecanismo de actuación no trivial). 
-No existe un momento concreto en que las áreas de memoria son liberadas, sino que lo determina en cada momento la JVM en función de sus necesidades de espacio. 
- 
-===== Clase Object ===== 
-La clase ''Object'' es la clase raíz de la cual heredan todas las clases. Esta herencia es implícita, no es necesario indicarlo en la subclase (mediante extends). Puede que una clase no herede de Object, pero tendrá una superclase que sí lo hace.  
- 
-La clase Object define una serie de métodos miembro que son heredados por todas las clases. Algunos de estos métodos se redefinen (o sobrescriben) en las clases que definamos. 
- 
-===== Encapsulamiento y abstracción ===== 
-La programación orientada a objetos (POO) es un paradigma de programación basado en unos pilares. Entre ellos podemos encontrar 4 principales:  
-**abstracción**, **encapsulamiento**, **herencia** y **polimorfimo**. 
- 
-La **abstracción** se puede entender como la representación de entidades (pueden ser de la vida real) mediante elementos de un programa. Definimos esos elementos mediante las __clases__ (Coche, Vehiculo, Persona, Pasajero, etc) y los usamos mediante sus __objetos__.  
- 
-Además, estos elementos realizan una serie de operaciones, pero nosotros no tenemos por qué saber cómo se realizan están operaciones: el cómo se hace, formará parte de la clase, donde se definen cómo se hacen las cosas. A nosotros una clase nos ofrece una interfaz (métodos) mediante la cual realizar dichas operaciones, sin tener que preocuparnos de entender cómo se hacen o de implementar su funcionamiento cada vez que las usemos. Todo esto se conoce como **abstracción**. 
- 
-El concepto de **encapsulamiento** es otro pilar fundamental de la POO y está ligado a la abstracción. Consiste en aislar los miembros (propiedades y operaciones) del acceso exterior (ponerlos dentro de una clase). Así evitamos que otras partes del programa pueden modificar las propiedades de un objeto de forma errónea, y crearemos una interfaz para trabajar con el objeto y acceder a sus propiedades. Esta interfaz son los **métodos**. Es la forma en la que el objeto nos permite trabajar con él, sin poder tener acceso a su interior (implementación de operaciones, valor de las propiedades). 
- 
-La **herencia** y el **polimorfismo** se verán más adelante ya que también están ligados entre sí. 
-===== Otras palabras reservadas ===== 
-Las siguientes palabras clave se irán viendo a medida que trabajemos con nuestras clases y ampliando conocimientos: 
- 
-  * ''extends'' : Se usa para indicar cuál es la clase desde la que se hereda. 
-  * ''super'' : similar a ''this'', pero contiene una referencia a la superclase. 
-  * ''abstract'' : modificador para clases o métodos, se usa en las clases abstractas. 
-  * ''final'' : se aplica tanto a variables, clases o métodos, e indica que no se permiten //modificar//. 
-  * ''interface'' : similar a la palabra ''class'', define una clase abstracta pura, se conocen como interfaces. 
-  * ''implements'' : similar a ''extends'', se usa para indicar de qué interfaces se hereda. 
- 
----- 
- 
-(c) {{date> %Y}} Fernando Valdeón 
- 
  
bloque4/clasesobjetos.1520247537.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)