martes, 17 de mayo de 2011

OBJETOS


OBJETOS



En programación orientado a objetos, un objetos se define como la unidad que en tiempo de ejecución realiza las tareas de un programa.

Estos objetos interactúa unos con otros en contraposición a la visión tradicional y la cual un programa es una colección de subrutinas, o simplemente una lista de instrucciones para el computador.

Cada objeto es capaz de recibir mensajes, procesar datos y emviar mensajes a otros objetos de manera similar a un servicio.

Un objeto es resultado de instanciación de una clase.

Los conceptos de clase y objeto son analogos a los de tipo de datos y variables, es decir, definida una clase podemos crear un objetos de esa clase igual que disponiendo de un determinado tipo de dato, podemos definir variables de dicho tipo: int a, b;


Un objeto en POO representa alguna entidad de la vida real, es decir, algunos de los objetos que pertenece al negocio con que estamos trabajando o al problema con el que estamos enfretando y con los que podemos interactuar.

Los objetos tienen caracteristicas fundamentales que nos permite conocerlos mediante la observación, identificación y el estudio posterior de su comportamiento; y estas caracteristicas son:

  • Entidad
  • Comportamiento
  • Estado

La identidad

La identidad es la propiedad que permite a un objeto diferenciarse de otros. Generalmente esta propiedad es tal, que da nombre al objeto. Ejemplo: El "verde" como un objeto concreto de una clase color, la propiedad que da identidad unica a este objeto es precisamente su "color" verde. Los objetos sirven para comparar si dos objetos son iguales o no.

Comportamiento

El comportamiento de un objeto esta directamente relacionado con su funcionalidad y determina las operaciones que este puede realizar o las que puede responder ante mensajes enviados por otro objeto. La funcionalidad de un objeto esta determinada primariamente por su responsabilidad.

Estado

El estado de un objeto que se refiere al conjunto de los valores de sus atributos en un instante de tienpo dado. El comportamiento de un objeto puede modificar el estado de este. Cuando una operación de un objeto modifica su estado se dice que esta tiene "efecto colateral".

Crear objetos

En java, se crea un objeto mediante la creación de objeto de una clase o, en otras palabras, ejemplarizando una clase. Para crear objetos se utiliza el operador new como el siguente ejemplo: Date hoy=new Date();

Esta sentencia crea un objeto Date.

En POO una instancia de programa es tratado como un conjunto dinámico de objetos interactuando entre si. Los objetos en la POO extiende la noción más general descrita en secciones anteriores para modelar un tipo muy especifico que esta definido fundamentalmente por:


  1. Atributos que representa los datos asociados al objeto, o lo que es lo mismo sus propiedades o carateristicas. Los atributos y sus valores en un momento dado, determina el estado de un objeto.

  2. Métodos que acceden a los atributos de una manera predefinida e implementa el comportamiento del objeto.

Loa atributos y métodos de un objeto estan definidos por una clase, auque en una instancia puede poseer atributos que no fueron definidos en una clase. Algo similar ocurre con los métodos, una instancia puede contener métodos que no este definidos en su clase de la misma manera una clase puede declarar ciertos métodos como "métodos de clase", y estos podrán estar o no estar presentes en la instancia.

En un lenguaje en el que cada objeto es creado apartir de una clase, un objeto es llamado una instancia de esa clase. Cada objeto pertece a un tipo de dato y dos objetos que pertenezna a la misma clase tendrá el mismo tipo de dato. Crear una instancia de una clase es entonces referido como instanciar la clase.

En casi todos los lenguajes de POO , el operador punto (.) es usado para referirse o "llamar" a un metodo particular de un objeto.

Composición

La composición es un tipo de relación que se establece entre dos objetos que tiene comunicación persistente. Se utiliza para expresar que un par de objetos tienen una relación de dependencia para llevar acabo sus funciones de modo que uno de los objetos involucrados está compuesto por el otro.

Uso

Un objeto usa a otro cuando puede emviar mensajes, por ejemplo, para requerir de este algun servicio. La composición puede verse como un caso particular de esta relación.

Delegación

En ocaciones para lograr flexibilidad de diseño, un objeto es implentado de forma tal que es delegue parte de su funcinalidad en otro objeto.

Objetos especializados


  • Singleton: un objeto del que solo puede existir una única instancia de su clase durante el tiempo de vida del programa.
  • Functor: un objeto puede ser utilizado como una función.

  • Objeto inmutable: un objeto creado con un estado fijo y que no puede variar en el tiempo de vida del mismo.
  • Objeto de primera clase: un objeto que puede ser utilizado sin restricciones.
  • Comtenedor: un objeto que contiene a otros objetos.
  • Fabrica de objetos: un objeto cuyo proposito es crear otros objetos.
  • Mataobjetos: un objeto apartir del cual se puede crear otros objetos.

  • Prototipo: un metaobjeto especializado a partir de cual se puede crear otros objetos copiandolo.
  • Objeto todopoderoso: un objeto que sabe mucho o hace mucho.

  • Antiobjeto: una metáfora computacional útil para conceptualizar y solucionar problemas complejos, usualmente con aproximaciones paralelas.

Escrito por: Octavio Cabrera Hernandez y Ana Karen Cruz Cruz

Bibliografia: hhttp://es.wikipedia.org/wiki/Objeto_(programaci%C3%B3n) Libro: Java 2 hhttp://www.programacion.com/articulo/tutorjava_nivel_basico_97/7#crearobjetos

lunes, 16 de mayo de 2011

** **ENCAPSULAMIENTO**(GABRIELA Y JUAN CARLOS)

TEMA : ENCAPSULAMIENTO



INTRODUCCION


***El encapsulamiento es una característica de la programación orientada a objetos es muy conveniente y nos permite (Si programamos bien) colocar en funcionamiento nuestro objeto en cualquier tipo de sistema, de una manera modular y escalable (algunas de las las de la ingenieria del software).



El encapsulamiento es el proceso por el cual los datos que se deben enviar a través de una red se deben colocar en paquetes que se puedan administrar y rastrear. consiste pues en ocultar los detalles de implementación de un objeto, pero a la vez se provee una pública por medio de sus operaciones permitidas por decir lo siguiente;


Hay muchos datos que no tiene porque conocerlo aquel que este usando la clase Persona; ya que son inherentes al objeto y solo controlan su funcionamiento interno; por ejemplo, cuando alguien te ve puede saber inmediatamente si eres hombre o mujer (propiedad) o puede hablarte y obtener una respuesta procesada (metodo); tambien puede conocer el color de tu cabello y ojos. En cambio, jamas sabra que cantidad de energia exacta tienes o cuantas neuronas te quedan, ni siquiera preguntandote ya que ninguna de tus propiedades externas visibles o funciones de comunicación al publico te permiten saber esos datos.


Considerando lo anterior también se define el encapsulado como la propiedad de los objetos de permitir el acceso a su estado únicamente a través de su interfaz o de relaciones preestablecidas con otros, el cual es un proceso de almacenar en una abstracción los elementos que constituyen su estructura y su comportamiento. La ocultación de información permite discernir entre qué partes de la abstracción están disponibles al resto de la aplicación y qué partes son internas a la abstracción. El encapsulamiento de variables y métodos en un componente de software ordenado es, todavía, una simple idea poderosa que provee dos principales beneficios a los desarrolladores de software: Modularidad esto es, el código fuente de un objeto puede ser escrito, así como darle mantenimiento, independientemente del código fuente de otros objetos. Así mismo, un objeto puede ser transferido alrededor del sistema sin alterar su estado y conducta.


El ocultamiento de la información, es decir, un objeto tiene una "interfaz publica" que otros objetos pueden utilizar para comunicarse con él. Pero el objeto puede mantener información y métodos privados que pueden ser cambiados en cualquier tiempo sin afectar a los otros objetos que dependan de ello.


La encapsulación da lugar a que las clases se dividan en dos partes:


Interface: captura la visión externa de una clase, abarcando la abstracción del comportamiento común a los ejemplos de esa clase.
Implementación: comprende la representación de la abstracción, así como los mecanismos que conducen al comportamiento deseado.




Una interface es una variante de una clase abstracta con la condición de que todos sus métodos deben ser asbtractos. Si la interface va a tener atributos, éstos deben llevar las palabras reservadas static final y con un valor inicial ya que funcionan como constantes por lo que, por convención, su nombre va en mayúsculas.



interface Nomina
{

public static final String EMPRESA = "Patito, S. A.";
public void detalleDeEmpleado(Nomina obj);
}



Una clase implementa una o más interfaces (separadas con comas ",") con la palabra reservada implements. Con el uso de interfaces se puede "simular" la herencia múltiple que Java no soporta.


class Empleado implements Nomina
{
...
}



La clase que implementa una interface tiene dos opciones:

1) Implementar todos los métodos de la interface.

2) Implementar sólo algunos de los métodos de la interface pero esa clase debe ser una clase abstracta (debe declararse con la palabra abstract).



Ocultamiento
Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y exponer sólo los detalles que sean necesarios para el resto del sistema.
El ocultamiento permite 2 cosas: restringir y controlar el uso de la Clase. Restringir porque habrá cierto comportamiento privado de la Clase que no podrá ser accedido por otras Clases. Y controlar porque daremos ciertos mecanismos para modificar el estado de nuestra Clase y es en estos mecanismos dónde se validarán que algunas condiciones se cumplan. En Java el ocultamiento se logra usando las palabras reservadas: public, private y protected delante de las variables y métodos.


Ejemplo 1: De un televisor, el usuario conoce su apariencia y parte de su funcionamiento. Sólo le importa que funcionen el selector de canales, el video y el audio; no le interesa saber cómo funciona cada una de las partes internas del aparato, ese detalle sólo le interesan al fabricante y al técnico de servicio.
Ejemplo 2: De un animal no sólo es necesario conocer su apariencia; también se requiere conocer qué sabe hacer y cómo reacciona ante determinadas situaciones

Formas de encapsular



1. Estándar (Predeterminado)
2. Abierto : Hace que el miembro de la clase pueda ser accedido desde el exterior de la Clase y cualquier parte del programa.
3. Protegido : Solo es accesible desde la Clase y las clases que heredan (a cualquier nivel).
4. Semi cerrado : Solo es accesible desde la clase heredada
5. Cerrado : Solo es accesible desde la Clase.


-ejemplos:
Objetos: encapsulamiento
§ Porción visible: interfaz (protocolo)– Contrato público de comportamiento– Descripción de operaciones: información de entrada y de salida
§ Porción oculta: implementación– Estructura de datos para almacenar la información– Código que se ejecuta para realizar las operaciones.

CONCLUCION:

El encapsulamiento consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstracción y el ocultamiento.
La utilidad del encapsulamiento va por la facilidad para manejar la complejida.

bibliografia: -Antonio J Martin Sierra Programador Java1 certificado.

-





ARCOS Y BALDOMERO (CLASE)

CLASE
1.-ES UN TIPO DEFINIDO POR EL USUARIO QUE DESCRIBEN LOS ATRIBUTOS Y METODOS DE LOS OBJETOS QUE SE CREAN APARTIR DE LA MISMA.
2.-TODA CLASE DESCRIBE ATRIBUTOS Y METODOS.
3.-LA DEFINICION DE UNA CLASE CONSTA DE DOS PARTES: EL NOMBRE DE LA CLASE Y EL CUERPO DE LA CLASE.
4.-EL NOMBRE DE LA CLASE VA PRECEDIDO POR LA PALABRA RESERVADA “CLASS” EL CUERPO DE LA CLASE CONSTA DE MODIFICADORES DE ACCSESO, ATRIBUTOS, MENSAJES Y METODOS.
5.-LAS CLASES PUEDEN INCLUIR EN SU DECLARACION MUCHOS METOSDOS O NO DECLARAR NINGUNO, ESTOS METODOS PUEDEN CLASIFICARSE EN METODOS DE DISTANCIA Y METODOS DE CLASE.
*ELEMENTOS BASICOS DE UNA CLASE EN SU ESTRUCTURA.
ü PAQUETE AL QUE PERTENECE LA CLASE
ü DEFINICION DE LA CLASE
ü VARIABLES INTERNAS
ü CONSTRUCTOR DE LA CLASE
ü PROPIEDADES
*AMBITO DE UNA CLASE:
EL AMBITO DE LA CLASE SE PUEDE DETERMINAR POR MEDIO DE LOS MODIFICADORES SIGUIENTES:
PUBLIC.-LA CLASE ES PÚBLICA Y POR LO TANTO ACCESIBLE PARA TODO EL MUNDO. SOLO PODEMOS TENER UNA CLASE PUBLIC POR UNIDAD DE COMPILACION, AUNQUE ES POSIBLE NO TENER NINGUNA.
NINGUNO.-LA CLASE ES “AMISTOSA”. SERA ACCESIBLE PARA LAS DEMAS CLASES DEL PACKAGE. SIN EMBARGO MIENTRAS TODASLAS CLASES CON LAS QUE ESTAMOS TRABAJANDO ESTEN EN EL MISMO DIRECTORIO PERTENECERAN AL MISMO PACKAGE Y POR ELLO SERAN COMO SI FUESEN PUBLICAS. COMO NUNCA TRABAJAREMOS EN VARIOS DIRECTORIOS ASUMIREMOS QUE LA AUSENCIA DE MODIFICADOR ES EQUIVALENTE A QUE LA CLASE SEA PUBLICA.
FINAL.-INDICARA QUE LA CLASE NO PUEDE “TENER HIJO”, NO SE PUEDE DERIVAR NINGUNA CLASE DE ELLA.
ABSTRACT.-SE TRATA DE UNA CLASE DE LA CUAL NO SE PUEDE INSTANCIAR NINGUN OBJETO.
*MIEMBROS DE UNA CLASE:
A) LOS ATRIBUTOS.- DEFINEN EL ESTADO DE UN DETERMINADO OBJETO Y CONSTITUYEN LA ESTRUCTURA INTERNA DE UNA CLASE.
B) LOS METODOS.- SON LAS OPERACIONES QUE DEFINEN DE LOS OBJETOS PERTENECIENTES A LA CLASE.
EJEMPLO DE METODOS:
Class thing
{
Private int x; //atributo
Public void setX( int x ) //metodo
}
X=15;
}
}
*ESPECIFICADORES DE ACCESO:
PARA CONTROLAR EL ACCESO JAVA PROVEE LAS PALABRAS CLAVE PRIVATE (PRIVADO), PROTECTED (PROTEGIDO) Y PUBLIC (PUBLICO), AUNQUE TAMBIEN ES POSIBLE OMITIRLAS (ACCESO PREDETERMINADO).
ACCESO PREDETERMINADO:
UN MIEMBRO SIN MODIFICADOR INDICADA QUE EL CONTROL PUEDE SER ACCEDIDO POR CUALQUIER CLASE PERTENECIENTE AL MISMO PAQUETE. NINGUNA OTRA CLASE, O SUBCLASE, FUERA DE ESTE PAQUETE PUEDE TENER ACCESO A ESTOS MIEMBROS.
ACCESO PÚBLICO:
UN MIEMBRO DECLARADO public (PUBLICO) ESTA ACCESIBLE PARA CUALQUIER OTRA CLASE O SUBCLASE QUE NECESITE UTILIZARLO. LA INTERFAZ PUBLICA DE UNA CLASE, O SIMPLEMENTE INTERFAZ, ESTA FORMADA POR TODOS LOS MIEMBROS PUBLICOS DE LA MISMA.
ACCESO PRIVADO:
UN MIEMBRO DECLARADO prívate (PRIVADO) ES ACCESIBLE SOLAMENTE POR LOS METODOS DE SU PROPIA CLASE. ESTO SIGNIFICA QUE NO PUEDE SER ACCESIDO POR LOS METODOS DE CUALQUIER OTRA CLASE, INCLUIDAS LAS SUBCLASES.
ACCESO PROTEGIDO:
UN MIEMBRO DECLARADO protected (PROTEGIDO) SE COMPORTA EXACTAMENTE IGUAL QUE UN PRIVADO PARA LOS METODOS DE CUALQUIER OTRA CLASE , EXCEPTO PARA LOS METODOS DE LAS CLASES DEL MISMO PAQUETE O DE SUS SUBCLASES CON INDEPENDENCIA DEL PAQUETE AL QUE PERTENEZCAN, PARA QUE SE COMPORTAN COMO UN MIEMBRO PUBLICO.
*NOTA: EL NOMBRE DE LA CLASE SIEMPRE SE INICIALIZA CON LA LETRA MAYUSCULA Y LAS DEMAS LETRAS MINUSCULAS.
EJEMPLO:
Public class Maestra{

Atributos

Constructores


Método

}


Los programas en java consta de varias piezaz llamadas clases. Estas clases incluyen piezas llamadas metodos, los cuales realizan tareas y devuelven informacion cuando completan esas tareas.


Dentro del enlace de una clase, los miembros de esta son accesibles para todosw los metodos de esa clase y pueden referenciarse directamente por su nombre. Fuera del enlace de una clase, los miembros de esta no pueden referenciarse por su nombre. Fuera del enlace de una clase, los miembros de esta no pueden referenciarse por su nombre. Los mimbros de una clase (como los miembros public) que son visibles pueden utilizarse solo a traves de unn "manejador": una referencia a un objeto de la clase, o el nombre mismo de la clase para los miembros static.


Hay dos paquetes que destacan por las clases de propositos general que incluyen: Java.io y java.lang.


El paquete java.io contiene las clases de objetos que proporcionan los metodod necesarios para escribir informacion en diversos dispositivos. El paquete java.lang contiene clases que se aplican al lenguaje mismo. Por ejemplo, clases especiales que encapsulan los tipos primitivos de datos, la clase System que proporciona los objetos para manipular la enmtrada /salida(EIS) estandar base para manipular cadenas de caracteres, estandar, clases para manipular cadenas de caracteres, una clase que proporciona los metodos correspondientes alas funciones matematicas de uso mas frecuente, una clase mas, una clase para analizar otras clases etc.


Una clase es un tipo definido por el usuario que describe los atributos y los metodios de los objetos que se crean apartir de de la misma. Una clase consta de dos partes, el nombre de la clase precedido por la palabra reservada class, y el cuerpo de la clase encerrado entre llaves. Esto es:


class nombre_clase


{


cuerpo de la clase


}


El cuerpo de la clase en general consta de modificadores de acceso (public, protected y private)

atributos, mensajes y metodos.


Todo en java forma parte de una clase, es una clase o describe como funciona una clase. El conocimiento de las clases es fundamental para poder entender los programas en Java.


Todas las acciones de los programas java se colocan dentro del bloque de una clase o un objeto. Un objeto es una instancia de una clase.

Clases anidadas: - Una clase anidada es un miembro mas de la clase que la contiene. Por ejemplo: en el codigo mostrado a continuacion, Fecha es una clase anidada:


public class (Persona


{


//Miembros de (Personas

private class (Fecha


{


//Miembros de (Fecha


}


//Otros miembros de (Personas


}


Una clase se debe definir dentro de otra solo cuando tenga sentido en el contexto de la clase que la incluye o cuando depende de la funcion que dempeña la clase que la incluye.


REFERENCIAS BIBLIOGRAFICAS:
*DEITEL,HARVEY M. JAVA.(COMO PROGRAMAR.INTRO AL DOO CON UML Y LOS PATRONES DE DISEÑO JBDC). pp 8, 9.
*FROUFE QUINTOS AGUSTIN "JAVA 2( MANUAL DE USUARIO Y TUTORIAL). pp 75, 76.
*CEBALLOS SIERRA FRANCISCO J. JAVA 2(CURSO DE PROGRAMACION ). pp 89, 253, 321, 322.

sábado, 14 de mayo de 2011

CLASES DERIVADAS (NATALY Y SURY)...

CLASES DERIVADAS


Cuando se crea un objeto de una clase derivada se crea implícitamente un objeto de la clase base que se inicializa con su constructor correspondiente.
Si en la creación del objeto se usa el constructor no-args, entonces se produce una llamada implícita al constructor no-args para la clase base.Pero si se usan otros constructores es necesario invocarlos explícitamente.En nuestro ejemplo dado que la clase método define un constructor, encestáremos también un constructor para la clase Ejecutivo, que podemos completar así:
class Ejecutivo extends Empleado {
int presupuesto;

Ejecutivo (String n, int s) {
super(n,s);
}
void asignarPresupuesto(int p) {
presupuesto = p;
}

public String toString() {
String s = super.toString();
s = s + " Presupuesto: " + presupuesto;
return s;
}
}

Obsérvese que el constructor de Ejecutivo invoca directamente al constructor de Empleado mediante super(argumentos).En caso de resultar necesariamente la invocación al constructor de la superclase debe ser la primera sentencia del constructor de la subclase.

La clase derivada heredará los miembros dato de la clase base y las funciones miembro,y tendrá un miembro dato más,eltitulo de la ventana de la ventana.
public class VentanaTitulo extends Ventan{

protected String titulo;
public Ventana Titulo(int x, int y, int w, int h, String nombre) {
super(x, y, w, h);
titulo=nombre;
{

extends es la palabra reservada que indica que la clase ventana Titulo derivada,o es una subclase, de la clase Ventana.La primera sentencia del constructor de la clase derivada es una llamada al constructor de la clase base mediante la palabra reservada super. La llamada
super(x,y,w,h);
Inicializa los cuatro miembros dato de la clase base Ventana:x,y,ancho,alto.
A continuacion, se inicializa los miembros dato de la clase derivada, y se realizan las tareas de inicializacion que sean necesarias.Si no se llama explícitamente al constructor de la clase base java lo realiza por nosotros,llamando al constructor por defecto si existe.la funcion miembro denominada desplazar cambia la posicion de la ventana,añadiendoles el desplazamiento.

public void desplazar(int dx, int dy){
x+=dx;
y+=dy;
{

.
Redefine la función miembro para mostrar una ventana con un titulo.
public void mostrar(){
super.mostrar();
System.out.println(“titulo : “+titulo);
}


En la clase derivada se define una función que tiene el mismo nombre y los mismos parámetros que la de la clase base.Se dice que redefinimos la función mostrar en la clase derivada.
La función miembro mostrar de la clase derivada Ventana Titulo hace una llamada ala función mostrar de la clase base Ventana,mediante:
super.mostrar();


De este modo aprovechamos el código ya escrito,y le añadimos el código que describe la nueva funcionalidad de la ventana por ejemplo, que muestre el titulo.
Si nos olvidamos de poner la palabra reservada super llamando a la función recursiva.
La función mostrar llamaría a mostrar indefinidamente.
public void mostrar(){ //¡ojo!, función recursiva
System.out.println(“titulo : “+titulo);
mostrar();
}

La función de la clase derivada Ventana Titulo,sera la siguiente.package ventana;
public class Ventana Titulo extends Ventana{
protected String titulo;
public Ventana Titulo(int x, int y, int w, int h, String nombre) {
super(x, y, w, h);
titulo=nombre;
}

public void mostrar(){
super.mostrar();
System.out.println(“titulo : “+titulo);
}
public void desplazar(int dx, int dy){
x+=dx;
y+=dy;
}
}

Objetos de la clase derivada creamos un objeto Ventana de la clase derivada Ventana Titulo ventana= new Ventana Titulo(0,0,20,30,"principal");

Mostramos la ventana con su titulo,llamando ala funcion mostrar,redefinida en la clase derivada
ventana.mostrar();

Desde el objeto ventana de la clase derivada llamamos alas funciones miembro definidas en dicha clase.
ventana.desplazar(4, 3);

Desde el objeto ventana de la clase derivada podemos llamar alas funciones miembros definidas en la clase base.
ventana.cambiarDimensiones(10, −5);

Para mostrar la nueva ventana desplazada y cambiada tamaño escribimos
ventana.mostrar();

NOTA:es un nuevo tipo de objeto definido por el usuario que tiene la propiedad de heredar atributos y métodos de otra clase definida previamente,denominada superclase.

SINTAXIS
classextends
{
//cuerpo de la clase

}





// BIBLIOGRAFIA







apuntes.rincondelvago.com/clases-derivadas.html







www.sc.ehu.es/sbweb/fisica/.../herencia.html






http://www.infosoftw.com/.../node31.html

jueves, 31 de marzo de 2011

Unidad 3. Clases y Objetos


Declaración de una clase
Metodo principal

Ambito de una clase.
El ámbito de la clase se puede determinar por medio de los modificadores siguiente:

public: -La clase es pública y por lo tanto accesible para todo el mundo. Sólo podemos tener una clase public por unidad de compilación, aunque es posible no tener ninguna.

Ninguno:- La clase es “amistosa”. Será accesible para las demás clases del package. Sin embargo mientras todas las clases con las que estemos trabajando estén en el mismo directorio pertenecerán al mismo package y por ello serán como si fuesen públicas. Como nunca trabajaremos en varios directorios asumiremos que la ausencia de modificador es equivalente a que la clase sea pública.

final: Indicará que esta clase no puede “tener hijo”, no se puede derivar ninguna clase de ella.

abstract: Se trata de una clase de la cual no se puede instanciar ningún objeto.




Miembros de una clase

Los miembros de la clase se denominas a los atributos y métodos:

a).- Los atributos:-  definen el estado de un determinado objeto y constituyen la estructura interna de una clase.

Declaración de  atributos.
Sintaxis:
<modificador> <tipo><identificador>[=<valor>];
    
 <modificador>:= public |private | protected |static.

<tipo>:= byte|short|int|long|char|float|double|boolean|String |<class>.

 <identificador>: = Es el nombre de la variable o constante.
    
 <valor>:= Es la información que se va asignar al identificador.

Ejemplo de atributos:
                    class Foo
                        { 
                                    public int x;
                                    private float y=10000.0f;
                                    private String name=“Fred Flintstone”;
                         }

b).- Los Métodos: - Son las operaciones que definen el comportamiento de los objetos pertenecientes a la clase.

Declaración de métodos.
       Sintaxis:
    <modificador> <tipo_resultado> nombreMetodo( [ Lista_parametros ])
      {
          declaración de variables locales;
          sentencias;
         [ return [( ] expresion [  ) ];]
      }


Ejemplo de métodos:
                                class thing
                                {
                                     private int x;                                      // atributo
                                     public void setX( int x)           // metodo
                                    {
                                          x=15;
                                     }
                                }



Especificadores de acceso
Para controlar el acceso Java provee las palabras clave private ( privado ), protected ( protegido ) y public ( publico), aunque también es posible omitirlas ( acceso predeterminado ).

Acceso predeterminado.
                Un miembro sin modificador indicada que el control puede ser accedido por cualquier clase perteneciente al mismo paquete. Ninguna otra clase, o subclase, fuera de este paquete puede tener acceso a estos miembros.

Acceso público.
                Un miembro declarado public ( publico ) está accesible para cualquier otra clase o subclase que necesite utilizarlo. La interfaz pública de una clase, o simplemente interfaz, está formada por todos los miembros públicos de la misma.

Acceso privado.
                Un miembro declarado private ( privado) es accesible solamente por los métodos de su propia clase. Esto significa que no puede ser accedido por los métodos de cualquier otra clase, incluidas las subclases.

Acceso protegido.
                Un miembro declarado protected ( protegido ) se comporta exactamente igual que un privado para los métodos de cualquier otra clase, excepto para los métodos de las clases del mismo paquete o de sus subclases con independencia del paquete al que pertenezcan, para las que se comporta como un miembro público.


Creación de Objetos

Creando  variables de referencia a objetos( instancia).
1.- Crear una variable que es una referencia a un objeto.
2.- Hay tres pasos:
    a).- Paso # 1 : Declarar una referencia a un objeto.
          Sintaxis :      nombreClase  nombre_objeto;

          Ejemplo:      Alumno miAlumno ;
         El tipo de la variable es referencia_a_nombre_clase( referencia  copiadora). 
   
b).- Paso # 2:  Inicialización.
         Sintaxis:         nombre_objeto= new nombreClase( );
        Ejemplo:          miAlumno= new Alumno( ); 

Declaración e inicialización juntas:
     Sintaxis:              nombreClase  nombre_objeto=new nombreClase( );

      Ejemplo:            Alumno  miAlumno=new Alumno( );

c).- Paso # 3: Asignar valores.
     - Aún no has asignado valores a las variables del objeto.
     - Variables son inicializadas con valores por defecto.
     - Para asignar valores:
           Declara e inicializar las variables de objeto.
 Especifica la referencia al objeto cuando asignes el valor.  

Acceso a los miembros de una clase.

          Se utiliza la notación de punto.
     Sintaxis:    < Objeto >.<Miembro>

           Se utiliza para atributos como para métodos.
           Ejemplo:
                               Circulo. radio;          // atributo
Circulo. Area( );     // Método


Referencia this.
  •   Almacenar miembros para cada instancia de objeto pueden incrementar grandemente los requerimientos.
  •    La referencia this hace innecesario almacenar una copia separada de cada objeto.
  •    this es incluido implícitamente; aunque puede especificarse explícitamente también.
Sintaxis.
         this.atributo;
         this.metodo([argumentos]);

Aplicando el this en métodos
Class ejemplo{
     void metodo1( )      {
           metodo2 ( );
      }

     void metodo2( )      {
            // codigo
      }
}

this indicado implícitamente
Class ejemplo2{
     void metodo1( )      {
           this.metodo2 ( );
      }

     void metodo2( )      {
            // codigo
      }
}

this indicado explícitamente


Aplicando el this con atributos en métodos.

Class imprimir{
     private String s=“ “;

    public void asignar(String s)    {
       this.s=s;
    }
   public void ejecutar ( )   {
       System.out.println (s);
    }
   public static void main (String args[ ] )   {
       imprimir a=new impimir ( );
       a.asignar(“hola”);
       a.ejecutar( );
      imprimir bb=  new imprimir();
      bb.asignar(“NOMBRE”);
       bb.ejecutar();
     }
}


Constructores.
  •  Métodos ejecutados automáticamente al crear un objeto de una clase (“new”).
  •  Se usan para llevar a cabo labores de inicialización.
  •  Simplifican la sintaxis y apoyan el encapsulamiento de los datos.
  •  Los métodos constructores de una clase tienen que tener el mismo nombre que la clase.

 Declaración  de constructores.
  Sintaxis:
         [public] <nombre_clase> (<lista_parametros>)  {
               Sentencias;
          }    

Ejemplo de constructores.

class CuentaBancaria {
   long numero;
   Cliente titular;
   long saldo;

   public CuentaBancaria(long num, Cliente clt, long s) {
    numero = num;
    titular = clt;
   saldo = s;
   }
}

class Cliente {
   String nombre;
   long dni;

  Cliente (String str, long num)     {
        nombre = str;
        dni= num;
     }
}



Ejemplo

public class Dog {
private int weight;

public Dog() { // Constructor 1
weight = 42;
}

public Dog(int kilos) { // Constructor 2
weight = kilos;
}

public int getWeight() {
return weigth;
}
}






Uso de constructores

Dog oneDog = new Dog();
oneDog.getWeight(); // entrega 42
Dog anotherDog = new Dog(80);
oneDog.getWeight(); // entrega 80




Ejemplo de objetos.
public class Persona{
                String nombre;
                int edad;
                String sexo;
               
                Persona(){
                               System.out.println("constructor sin parametros");
                }
               
                Persona(String n, int e,String s){
                               nombre=n;
                               edad=e;
                               sexo=s;
                }
               
                Persona (String s) {
                               sexo=s;
                }
               
                void mostrarNombre(){
                               System.out.println("Nombre = "+nombre);
                }
               
                void mostrarEdad(){
                               System.out.println("Edad = "+edad);
                }
               
                void mostrarSexo(){
                               System.out.println("Sexo = "+sexo);
                }
               
                void mostrarPersona(){
                               mostrarNombre();
                               mostrarEdad();
                               mostrarSexo();
                }
               
                void actaDeNacimiento(String n) {
                               nombre=n;
                }
               
                void felizCumpleaños(){
                               edad=edad+1;
                }
                public static void main(String args[]){
                               Persona miObjeto=new Persona("Masculino");
                               miObjeto.mostrarPersona();
                               miObjeto.actaDeNacimiento("James Gosmling");
                               miObjeto.mostrarPersona();
                               miObjeto.felizCumpleaños();
                               miObjeto.mostrarPersona();
                }
}




Ejemplo
import java.io.*;
import java.util.*;
class CuerpoGeometrico2{
    String nombre;
                int base;
                int altura;
                double area;
   
                //sobrecarga  de constructores
                public CuerpoGeometrico(String nombre){
                               this.nombre=nombre;
                }
               
                public CuerpoGeometrico(String x,int base){
                               nombre=x;
                               this.base=base;
                }
               
                public CuerpoGeometrico(String x, int y, int z){
                               this.nombre=x;
                               this.base=y;
                               this.altura=z;
                }
               
               
                public int leerInfo(String cadena){
                               System.out.println();
                               System.out.println(cadena);
                               return(Leer.datoInt());
                }             
               
//Sobrecarga de Metodos         
                public double areaTriangulo(int b, int a){
                               return ((b*a)/2);
                }
               
                public double areaTriangulo(CuerpoGeometrico x){
                               return ((x.base*x.altura)/2);
                }
                public double areaRectangulo(int b, int a){
                               return (b*a);
                }
                                              
                public double areaRectangulo(CuerpoGeometrico x){
                               return (x.base*x.altura);
                }
               
                public void imprimeFig(CuerpoGeometrico x){
                               System.out.println("El cuerpo geometrico es un:  "+x.nombre);
                               System.out.println("Su base es:  "+x.base);
                               System.out.println("Su altura es:  "+x.altura);
                               System.out.println("El area es:  "+x.area);
                }

    public static void main(String[] args){
                               int opcion;
                               double areaC;
                                do{
            System.out.println("\n\t1.-Calcular Area Triangulo predeterminado.");
                                               System.out.println("\n\t2.-Calcular Area Rectangulo predeterminado.");
                                               System.out.println("\n\t3.-Calcular Area Triangulo. ");
                                               System.out.println("\n\t4.-Calcular Area rectangulo.");
                                               System.out.println("\n\t5.-Salir.");
                              
            opcion=Leer.datoInt(); 
                                               switch(opcion){
                case 1:       
                    CuerpoGeometrico t1=new CuerpoGeometrico("Triangulo Predeterminado",10,20);
                               t1.area=t1.areaTriangulo(t1);
                               t1.imprimeFig(t1);
                    break;
                 case 2:       
                    CuerpoGeometrico r1=new CuerpoGeometrico("Rectangulo Predeterminado",150,10);
                               r1.area=r1.areaRectangulo(r1);
                               r1.imprimeFig(r1);
                    break;
                case 3:
                                CuerpoGeometrico t2=new CuerpoGeometrico("Triangulo");
                                t2.base=t2.leerInfo("base");
                                t2.altura=t2.leerInfo("altura");
                                t2.area=t2.areaTriangulo(t2.base,t2.altura);
                                t2.imprimeFig(t2);
                    break;
                case 4:
                                CuerpoGeometrico r2=new CuerpoGeometrico("Rectangulo");
                                r2.base=r2.leerInfo("base");
                                r2.altura=r2.leerInfo("altura");
                                r2.area=r2.areaRectangulo(r2.base,r2.altura);
                                r2.imprimeFig(r2);
                break;
                default: System.out.println("Elige una opcion correcta");
                 break;
            }
   }while(opcion!=5);
  }
}