Elementos del lenguaje para la POO atributos class

Anuncio
P.O.O. 1
Elementos del lenguaje para la POO
4.1
Creación de clases y objetos
4.1.1.
Clases
Las clases son abstracciones que representan
a un conjunto de objetos con atributos y métodos
comunes.
4.1.2.
public class plumones {
String color;
String tipo;
Atributos
Representan las características comunes a
nivel de código; en la mayoría de lenguajes
orientados a objetos, estos atributos son
implementados mediante variables de instancia
(declaradas justo después de la clase y
accesibles a todos los métodos de la misma).
4.1.3.
Metodos
}
atributos
public void escribir(String msg) {
...
}
public void pintar( ) {
...
}
Métodos
Permiten a las clases modificar el
comportamiento de los objetos, cambiando los
valores de los atributos e interactuando con
otros métodos de la clase que expongan una determinada funcionalidad precisada.
4.1.3.1. Paso de argumentos por referencia y por valor
En el paso por valor se realiza una copia de los valores que se pasan, trabajando dentro de la función
con la copia. Es por ello que cualquier cambio que sufran dentro, no repercute fuera de la función.
En el paso por referencia no se realiza dicha copia, por lo que las modificaciones de dentro de las
funciones afectan a los parámetros y esos cambios permanecen al final de la función. (en C se utilizaban
punteros para el paso de argumentos por referencia).
En Java el paso por parámetro es por valor , aunque los efectos son de paso por referencia cuando los
argumentos son objetos.
4.1.3.2. Métodos de acceso
get’s y set’s
4.1.3.3. Argumentos variables
Los argumentos variables permiten que un método reciba ‘n’ cantidad de datos de un mismo tipo, para
hacer que un método tenga un número variable de argumentos se puede hacer enviando un array y luego
desde el método recorrer el array.
public static void main(String[] args) {
System.out.println("y los argumentos son:");
for (String arg : args)
System.out.println(arg);
}
Unidad 4
L.S.C. Lourdes E. Ramírez Fernández
-1-
P.O.O. 1
Java 5.0 introdujo la lista de argumentos variables mediante la elipsis, esto consiste en colocar tres
puntos suspensivos después del tipo de dato en la declaración del método, en el último término (parámetro)
del mismo de la siguiente manera:
public static void imprimir(String... cadenas) {
for (String cadena : cadenas)
System.out.println(cadena);
}
La ventaja se entiende cuando tienes un método simple como sumar y quieres que sea el mismo sin
importar el número de parámetros. De esta manera con llamar una función sumar(int… numero) puedes usarla
con sumar(1,2) y sumar(3,4,7,9) y funciona para la misma función sin necesidad de crear arrays, ni 20
funciones diferentes con diferente número de argumentos.
public int sumar(int... valor) {//Aquí está la elipsis
int resultado=0;
for(int i=0;i<valor.length;i++){
resultado+=valor[i];
}
return resultado;
}
Como se ha dicho, la elipsis sólo se acepta para el último término de la declaración del método, si se
cambia la declaración del método sumar por el siguiente: “ public int sumar(int... valor, String cadena) “ se
arrojará un error de compilación
4.1.3.4. Sobrecarga /polimorfismo
Es tener en un mismo programa varios métodos con el mismo nombre, siempre que se les envíe
parámetros distintos, ya sea en tipo o cantidad.
El compilador se encarga de identificar el método a utilizar basándose en el número y tipo de
argumentos enviados al llamarlo.
class DibujodeDatos {
void draw(String s) {
...
}
void draw(int i) {
...
}
void draw(float f, int e) {
...
}
}
Esto permite el polimorfismo parametrico.
4.1.4.
Modificador de acceso
para clase es pública, abstracta o final. Los modificadores van delante de la palabra clave class y
son opcionales.
Unidad 4
L.S.C. Lourdes E. Ramírez Fernández
-2-
P.O.O. 1
 public la clase puede ser utilizada por objetos que estén fuera del paquete actual.
 Por defecto (cuando no tiene modificador), una clase sólo puede ser utilizada por otras clases del
mismo paquete en el que están declaradas.
 abstract Una clase abstracta está diseñada para ser una superclase y no puede ejemplarizarse
(crear objetos de ella).
 final declara que una clase no puede tener subclases. Podria ser por razones de seguridad y
razones de diseño.
Para atributos y/o metodos
El nivel de acceso más restringido es private. Un miembro privado es accesible sólo para la clase en la
que está definido
De ahí sigue el acceso package, que ademas de permitir el acceso desde su misma clase, lo permite en
clases que pertenezcan al mismo paquete.
Después tenemos el acceso protected, que ademas de los dos accesos de package incluye tambien el
acceso desde las subclases, es decir, estos atributos son heredados.
Y por ultimo tenemos el acceso public, que indica que se puede acceder de cualquier otra clase.
4.1.5.
Constructores
Los constructores son métodos que permiten inicializar los atributos del objeto.
Se caracteriza por:
 tener como nombre el mismo que su clase y
 por no regresar ningún valor; por lo que al declararlo solo es necesario poner su nombre y si se
desea anteponer el modificador de acceso “public”.
Los constructores se ejecutan al utilizar el operador new en la creacion de objetos.
class Rectangulo{
int x;
int y;
int ancho;
int alto;
Rectangulo(int x, int y, int ancho, int alto){
// this permite identificar que la variable a continuación se refiere al atributo de la clase
this.x=x;
this.y=y;
this.ancho=ancho;
this.alto=alto;
}
}
y en el main seria…
Rectángulo obj = new Rectángulo(5,6,27,38);
En la instrucción anterior se estan realizandos dos acciones
1) Crear un objeto en memoria y
(al utilizar new)
2) Llamar al constructor. (en este caso se inicializa con los valores que se envían como parámetro)
Unidad 4
L.S.C. Lourdes E. Ramírez Fernández
-3-
P.O.O. 1
4.1.6.
Miembros de clase (static)
4.1.7.
Interfaz de programacion de aplicaciones
4.1.8.
Clase String
4.1.8.1. Conversión de tipo String a tipo primitivo de datos.
4.1.8.2. Métodos de la clase String
4.1.9.
Arreglos de objetos
4.1.10. Tipos parametrizados
4.2
Uso de la E/S estándar
4.3
Uso de paquetes
4.4
Convenciones para la codificación y documentación
Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto
nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador
puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego
compilarlo a un programa más manejable por una computadora.
El compilador de java es JDK (J2SE) distribuido por SUN Microsystems y es necesario tener instalado
tanto el compilador (javac) como la JVM (java).
1: Con un editor de texto simple (incluso notepad sirve, aunque resulta poco aconsejabe) creamos un
archivo con el código java asignándole nombre con la extensión .java.
2: Abrimos una ventana DOS y cambiamos el path a la carpeta donde se encuentre el archivo:
C:> cd C:\ApuntesJava
Y compilamos con ‘javac’
C:\ApuntesJava>javac HolaMundo.java
Si no hay ningún error en el programa se producirá la compilación y el compilador almacenará en el mismo
directorio un fichero de nombre HolaMundo.class, con el código ejecutable correspondiente a la clase
HolaMundo.
En Java las mayúsculas y minúsculas son significativas.
En el ejemplo se utiliza la clase del API de Java System. Sin embargo el programa no tiene ningún
import. No obstante el compilador no detecta ningún error y genera el código ejecutable directamente. Esto
se debe a que la clase System está definida en el package java.lang, que es el único del que no es necesario
hacer el import, que es hecho implicitamente por el compilador. Para cualquier clase del API, definida fuera
de este package es necesario hacer el import correspondiente.
4.5
Ejecución
Los archivos .class son invocables directamente desde la línea de comandos (con la sintaxis java
nombreDeClase) si tienen un método main definido.
Se utiliza el comando ‘java’.
C:\ApuntesJava>java HolaMundo
Se cargará la JVM, cargará la clase HolaMundo y llamará a su método main que producirá en la ventana
DOS la salida del programa (impresión en pantalla).
Unidad 3
L.S.C. Lourdes E. Ramírez Fernández
-4-
P.O.O. 1
4.6
Argumentos de la línea de comandos
Una aplicación Java puede aceptar cualquier número de argumentos desde la línea de comandos. Los
argumentos de la línea de comandos permiten al usuario variar la operación de una aplicación.
Cuando llama a una aplicación, el usuario teclea los argumentos de la línea de comandos después del
nombre de la aplicación.
En el lenguaje Java, cuando se llama a una aplicación, el sistema de ejecución pasa los argumentos de la
línea de comandos al método main de la aplicación, mediante un array de Strings. Cada String del array
contiene un argumento.
Esta sencilla aplicación muestra todos los argumentos de la línea de comandos uno por uno en cada línea.
class Echo {
public static void main (String[] args) {
for (int i = 0; i < args.length; i++)
System.out.println(args[i]);
}
}
C:\> java Echo Bebe agua Caliente
Bebe
agua
Caliente
C:\ java Echo "Bebe agua Caliente"
Bebe agua Caliente
4.7
Máquina virtual
Una Máquina virtual Java (en inglés Java Virtual Machine, JVM) es un máquina virtual de proceso
nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones
expresadas en un código binario especial (el Java bytecode), el cual es generado por el compilador del
lenguaje Java.
El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código máquina de bajo nivel.
La JVM es una de las piezas fundamentales de la plataforma Java. Actúa como un puente que entiende
tanto el bytecode, como el sistema sobre el que se pretende ejecutar.
La gran ventaja de la máquina virtual java es aportar portabilidad al lenguaje de manera que desde Sun
Microsystems se han creado diferentes máquinas virtuales java para diferentes arquitecturas y así un
programa .class escrito en un Windows puede ser interpretado en un entorno Linux. Tan solo es necesario
disponer de dicha máquina virtual para dichos entornos.
4.8
Recolección de basura
El entorno de ejecución de Java tiene un recolector de basura que periódicamente libera la memoria
ocupada por los objetos que no se van a necesitar más.
Unidad 3
L.S.C. Lourdes E. Ramírez Fernández
-5-
P.O.O. 1
El recolector de basura de Java es un barredor de marcas que escanea dinámicamente la memoria de
Java buscando objetos, marcando aquellos que han sido referenciados. Después de investigar todos los
posibles paths de los objetos, los que no están marcados (esto es, no han sido referenciados) se les conoce
como basura y son eliminados.
El recolector de basura funciona en un thread (hilo) de baja prioridad y funciona tanto síncrona como
asíncronamente dependiendo de la situación y del sistema en el que se esté ejecutando el entorno Java.
El recolector de basura se ejecuta síncronamente cuando el sistema funciona fuera de memoria o en
respuesta a una petición de un programa Java. Un programa Java le puede pedir al recolector de basura que
se ejecute en cualquier momento mediante una llamada a System.gc().
Nota: Pedir que se ejecute el recolector de basura no garantiza que los objetos sean recolectados.
Unidad 3
L.S.C. Lourdes E. Ramírez Fernández
-6-
Descargar