0% encontró este documento útil (0 votos)
58 vistas20 páginas

Unidad 3

El documento habla sobre clases y objetos en programación orientada a objetos. Explica conceptos como la definición de clases, declaración de clases, miembros de clases, ámbito de clases y creación de objetos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
58 vistas20 páginas

Unidad 3

El documento habla sobre clases y objetos en programación orientada a objetos. Explica conceptos como la definición de clases, declaración de clases, miembros de clases, ámbito de clases y creación de objetos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

INSTITUTO TECNOLOGICO DE COMITANCILLO

Espritu tecnolgico reflejo de trabajo y libertad

ASIGNATURA:
PROGRAMACION ORIENTADO A OBJETOS

DOCENTE:
LIC. ISIDRO LPEZ RUIZ

ALUMNO:
LUIS ANTONIO VASQUEZ JIMENEZ

ACTIVIDAD:
UNIDAD 3: CLASES Y OBJETOS

CARRERA:
ING. EN INFORMATICA

SEMESTRE:
2

GRUPO:
A

SAN PEDRO COMITANCILLO, OAX. SAN PEDRO COMITANCILLO OAXACA MARZO DEL 2014.

NDICE
3. Clases y objetos. ........................................................................................................................ 3 3.1 Definicin de una clase. ..................................................................................................... 3 3.2 Declaracin de clases. ....................................................................................................... 3 3.4 mbito referente a una clase. .......................................................................................... 7 3.5. Especificadores de acceso. ............................................................................................. 9 3.6 Creacin de objetos. ......................................................................................................... 11 3.7. Puntero this........................................................................................................................ 11 3.8. Constructores y destructores. ...................................................................................... 13 3.9. Clases Predefinidas. ........................................................................................................ 15 3.10. Definicin, creacin y reutilizacin de paquetes/libreras. ................................. 15 3.11. Manejo de excepciones. ............................................................................................... 17

3. Clases y objetos.
3.1 Definicin de una clase. Una clase es un molde del que luego se pueden crear mltiples objetos, con similares caractersticas. Una clase es una plantilla (molde), que define atributos (variables) y mtodos (funciones). Una clase es una agrupacin de datos y de cdigo que acta sobre esos datos, a la que se le da un nombre. Una clase contiene: Datos (se denominan Datos Miembro). Estos pueden ser de tipos primitivos o referencias. Mtodos (se denominan Mtodos Miembro). Hasta ahora slo se ha utilizado la palabra clave public para calificar el nombre de las clases que hemos visto, pero hay tres modificadores ms. Los tipos de clases que podemos definir son: Abstract. Una clase abstract tiene al menos un mtodo abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia. Final. Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final. Public. Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas. Synchronizable. Este modificador especifica que todos los mtodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.

3.2 Declaracin de clases.

La clase define los atributos y mtodos comunes a los objetos de ese tipo, pero luego, cada objeto tendr sus propios valores y compartirn las mismas funciones. Debemos crear una clase antes de poder crear objetos (instancias) de esa clase. Al crear un objeto de una clase, se dice que se crea una instancia de la clase o un objeto propiamente dicho. La estructura de una clase es: class [nombre de la clase] { [atributos o variables de la clase] [mtodos o funciones de la clase] [main] }

* La declaracin de la clase. Indica el nombre de la clase precedido por la palabra clave class.

* El cuerpo de la clase.

El cuerpo de la clase sigue a la declaracin de la clase y est contenido entre la pareja de llaves ({ y }). El cuerpo de la clase contiene las declaraciones de las variables de la clase, y tambin la declaracin y la implementacin de los mtodos que operan sobre dichas variables.

Declaracin de variables de instancia. El estado de un objeto est representado por sus variables (variables de instancia). Las variables de instancia se declaran dentro del cuerpo de la clase. Tpicamente, las variables de instancia se declaran antes de la declaracin de los mtodos, pero esto no es necesariamente requerido.

Implementacin de mtodos. Los mtodos de una clase determinan los mensajes que un objeto puede recibir. Las partes fundamentales de un mtodo son el valor de retorno, el nombre, los argumentos (opcionales) y su cuerpo. Adems, un mtodo puede llevar

otros modificadores opcionales que van al inicio de la declaracin del mtodo y que se analizarn ms adelante. La sintaxis de un mtodo es la siguiente:
<otrosModificadores> valorRetorno argumentos> ) { /* Cuerpo del mtodo */ sentencias; } nombreMetodo( <lista de

Los signos <> indican que no son obligatorios.

Los mtodos en Java pueden ser creados nicamente como parte de una clase. Cuando se llama a un mtodo de un objeto se dice comnmente que se enva un mensaje al objeto. Ejemplo /* Usuario.java */ class Usuario { String nombre; int edad; String direccion; void setNombre(String n) { nombre = n; } String getNombre() { return nombre; } void setEdad(int e) { edad = e; } int getEdad() { return edad; } void setDireccion(String d)

{ direccion = d; } String getDireccion() { return direccion; } } 3.3 Miembros de una clase. En el lenguaje coloquial de la programacin orientada al objeto es comn escuchar trminos tales como: mtodos, atributos, herencia, polimorfismo, etc. En esta seccin nos encargaremos de hablar de los dos primeros. Mtodos: En comparacin con la programacin tradicional, un mtodo es lo mismo que una funcin cualquiera, salvo que como los mtodos se declaran para pertenecer a una clase especfica, se dice que todos los mtodos de dicha clase son miembros de la misma. Por lo dems, la declaracin y definicin de los mtodos es exactamente igual que declarar y definir cualquier otra funcin. Atributos: En comparacin con la programacin tradicional, un atributo es lo mismo que una variable cualquiera, salvo que como los atributos se declaran para pertenecer a una clase especfica, se dice que todos los atributos de dicha clase son miembros de la misma. Por lo dems, la declaracin de los atributos es exactamente igual que declarar cualquier otra variable. Miembros: A partir de este momento usaremos la palabra miembro para referirnos al hecho de que un mtodo o un atributo pertenece a tal o cual clase. Por Ejemplo, en el programa (visto anteriormente la Clase CRender posee dos miembros, buffer que es un atributo; y m_Renderizar que es un mtodo. class CRender { public: char buffer[256]; // atributo void m_Renderizar(const char *cadena); // mtodo

}; 3.4 mbito referente a una clase. El mbito de una variable es la regin de un programa dentro del cual la variable puede ser referenciada con su nombre simple. mbito es diferente de visibilidad, el cual aplica slo a variables miembro y determina si la variable puede ser usada desde fuera de la clase dentro de la cual es declarada. La visibilidad se establece con un modificador de acceso. Cuando hablamos de mbito o alcance nos estamos refiriendo principalmente al rea de influencia de una variable o funcin, a la zona donde sta tiene sentido. Toda variable/funcin tiene un rango de accin, se encuentra en un sitio, tiene un contexto, fuera del cual pierde significado y valor. Un ejemplo que puede ilustrar esto puede ser un lmpara. La lmpara, al encenderla, ilumina un rea especfica, pero no tiene influencia fuera de esa rea. Por ejemplo: si necesito buscar algo en mi cuarto, que la luz de la sala o de la cocina estn encendidas sera irrelevante para m porque mi cuarto est fuera del rea que ellas iluminan, pero si enciendo la luz de mi cuarto puedo buscar lo que necesito ms claramente, aunque no tendra ninguna influencia fuera de l, l mbito (alcance) de esa luz se limita a mi cuarto. De acuerdo con su mbito una variable/funcin puede ser:

Pblica Privada Protegida Local Vamos a hablar de estos mbitos desde el punto de vista de la clase. Public. Una variable/funcin pblica puede ser accedida desde fuera de la clase. Es decir, puedo acceder desde la instancia de la clase y no slo desde el cdigo interno de la clase. Ejemplo de funciones pblicas son los mtodos de una clase. Tambin es posible crear variables pblicas, para que puedan ser manejadas desde la instancia, pero no es algo comn o recomendable, entre otras cosas porque deja un hueco de seguridad en la clase, acabando con la idea de la

encapsulacin. Para declarar una variable/funcin como pblica, se le antepone la palabra clave public. Private. Al contrario que las pblicas, las variables/funciones privadas slo pueden ser accedidas desde dentro de la misma clase. Todo intento de llamarlas desde la una instancia de la misma es en vano. Mantener variables/funciones privadas permiten tener un mayor control sobre la clase, sobre el modo como procesa sus mtodos, como maneja sus variables, etc. Para declarar una variable/funcin como privada, se le antepone la palabra clave prvate. Protected. Existe un tipo intermedio de mbito, llamado protegido. Es un punto medio entre pblico y privado, porque -como ocurre con las privadas- no se puede acceder a ella desde una instancia de la clase, pero -como ocurre con las pblicas- puede ser accedido desde las subclases de sta, no importa si se encuentran o no en el mismo paquete. Bsicamente significa que, si una clase hereda de otra, tendr acceso a las variables/funciones protegidas de la superclase, de lo contrario, no podr acceder a ellas. Para declarar una variable como protegida, se le antepone la palabra clave protector. Local. Una variable local slo es accesible desde dentro de la funcin donde se declara; esto es vlido tanto para los parmetros de la funcin como para las variables declaradas dentro de ella. Una vez terminada la funcin, la variable es destruida hasta que la funcin vuelve a ser invocada. No hay palabras clave para las variables locales. La localizacin de la declaracin de la variable dentro del programa establece su mbito y la coloca dentro de una de estas cuatro categoras: Variable miembro (pertenece a una clase). Variable local Parmetro de mtodo. Parmetro de manejador de excepciones.

3.5. Especificadores de acceso. Modificadores (public, protected y private). Se trata de una palabra que antecede a la declaracin de una clase, mtodo o propiedad de clase. Hay tres posibilidades: public, protected y private. Una cuarta posibilidad es no utilizar ninguna de estas tres palabras; entonces se dice que se ha utilizado el modificador por defecto (friendly). Los especificadores determinan el alcance de la visibilidad del elemento al que se refieren. Referidos por ejemplo a un mtodo, pueden hacer que el mtodo sea visible slo para la clase que lo utiliza (private), para stas y las heredadas (protected), para todas las clases del mismo paquete (friendly) o para cualquier clase del tipo que sea (public). En la siguiente tabla se puede observar la visibilidad de cada espectador:

Modificadores static y final. Un atributo de una clase se puede modificar con la palabra reservada static, con ello indicamos que el atributo no pertenece a las instancias de la clase si no a la propia clase. Que quiere decir esto?, pues que no existe una copia de ese atributo en cada uno de los objetos de la clase, si no que existe una nica copia que es compartida por todos los objetos de la clase. Por ello, a los atributos static se les llama atributos de la clase. Una consecuencia de lo anterior es que para acceder a los atributos static de una clase no necesitamos crear una instancia de la clase, podemos acceder a ellos a travs del nombre de la clase. De igual modo, podemos modificar los mtodos de una clase con la palabra reservada static. A estos mtodos se les llaman mtodos de la clase, y, al igual que con los atributos static, podemos usarlos a travs del nombre de la clase, sin necesidad de crear ninguna instancia de la clase. Pero existe una restriccin, los mtodos estticos de una clase solo pueden acceder a atributos estticos u otros mtodos estticos de la clase, pero nunca a atributos o mtodos que no lo sean. package tipos ; public class Persona implements Contacto { private String nombre ; private String apellidos ; private String telefono ; private static nInstancias ; publ ic Persona ( ) { super ( ) ; iniciaAtributos( ) ;

public static int getNInstancias( ) { return nInstancias ; } Fjate que el mtodo getMlnstancias() que accede al atributo nlnstancias es esttico.

3.6 Creacin de objetos. Un objeto es una instancia de una clase, creada en tiempo de ejecucin. Es una estructura de datos formada por tantos campos como atributos tiene la clase. El estado de un objeto viene dado por el valor de los campos. Los mtodos permiten consultar y modificar el estado del objeto. Para la clase Usuario del ejemplo anterior podemos crear un objeto de la siguiente manera: Usuario usr1; //usr1 es una variable del tipo Usuario usr1 = new Usuario(); La primera lnea corresponde a la declaracin del objeto, es decir, se declara una variable del tipo de objeto deseado. La segunda lnea corresponde a la iniciacin del objeto.

El operador new El operador new crea una instancia de una clase asignando la cantidad de memoria necesaria de acuerdo al tipo de objeto. El operador new se utiliza en conjunto con un constructor. El operador new regresa una referencia a un nuevo objeto.

3.7. Puntero this. El this es un puntero o referencia (Java) al objeto.

El programador no lo crea ni lo inicializa. Cuando se llama a una funcin miembro, el cdigo oculto genera el this con la direccin del objeto y lo pasa como parmetro. En el cuerpo de mtodo se puede referir al objeto actual, desde donde fue llamado el mtodo, utilizando el this. En Java, slo se puede usar this dentro del cuerpo de la definicin de un mtodo de instancia, nunca en el cuerpo de un mtodo de clase. EJEMPLO: public class Circulo { static int numCirculos = 0; public static final double PI=3.14159265358979323846; public double x, y, r; public Circulo(double x, double y, double r) { this.x = x; this.y = y; this.r = r; numCirculos++; } public Circulo(double r) { this(0.0, 0.0, r); } public Circulo(Circulo c) { this(c.x, c.y, c.r); } public Circulo() { this(0.0, 0.0, 1.0); } public double Perimetro() {return 2.0 * PI * r;} public double Area() {return PI * r * r;} }

Hay ocasiones en las que resulta til referirse al objeto desde el que se est ejecutando un mtodo. En esas ocasiones se puede usar la referencia especial de objeto this, pero cuidado, siempre dentro de un mtodo no esttico. Esta referencia se suele usar para pasar una referencia al objeto actual como un parmetro para otros mtodos. La siguiente llamada aadira el objeto a una relacin de publicaciones prestadas:

Se usa this cuando un atributo est oculto por una declaracin de variable o parmetro. Por ejemplo:

En el segundo constructor ttulo y autor estn ocultos por los parmetros con el mismo nombre. Para garantizar que accedemos al campo adecuado en lugar de al parmetro del mtodo, le colocamos el prefijo this.

3.8. Constructores y destructores. El constructor es un tipo especfico de mtodo que siempre tiene el mismo nombre que la clase y se utiliza para construir objetos de esa clase. No tiene tipo de dato especfico de retorno, ni siquiera void. Esto se debe a que el tipo especfico que debe devolver un constructor de clase es el propio tipo de la clase. Constructor no-args. Si una clase no declara ningn constructor, Java incorpora un constructor por defecto (denominado constructor no-args) que no recibe ningn argumento y no hace nada. Si se declara algn constructor, entonces ya no se puede usar el constructor no-args. Es necesario usar el constructor declarado en la clase. El constructor no-args sera: class Punto { int x , y ;

Punto ( ) { } } Existen tres tipos de constructores: Constructor por defecto. Si no se define ningn constructor de una clase, el compilador generar un constructor por defecto. El constructor por defecto no tiene argumentos y simplemente sita ceros en cada byte de las variables instancia de un objeto. Si se definen constructores para una clase, el constructor por defecto no se genera. Constructor de copia. El constructor de copia se utiliza para inicializar un objeto con otro objeto de la misma clase. Constructor comn. El constructor comn es aquel que recibe parmetros para asignarles como valores inciales a los datos miembros, o sea que al crear la instancia, se pas unos parmetros para inicializar.

El constructor se invoca automticamente cuando new crea un objeto de esa clase. Caractersticas: Se llama igual que la clase. No devuelve nada, ni siquiera void. Pueden existir varios, pero siguiendo las reglas de la sobrecarga de funciones. De entre los que existan, tan slo uno se ejecutar al crear un objeto de la clase. Dentro del cdigo de un constructor generalmente suele existir inicializaciones de variables y objetos, para conseguir que el objeto sea creado con dichos valores iniciales.

Un destructor es un mtodo cuyo objetivo es el de eliminar toda la memoria que ocup un objeto. En java no es necesaria la definicin de destructores, pues el mismo lenguaje se encarga de la eliminacin y liberacin de la memoria ocupada por un objeto, esto se realiza cada vez que un objeto pierde todas sus referencias. Existen dos tipos de destructores. Pueden ser pblicos o privados, segn si se declaran:

1. Si es pblico se llama desde cualquier parte del programa para destruir el objeto. 2. Si es privado no se permite la destruccin del objeto por el usuario. 3.9. Clases Predefinidas.
Dentro de las especificaciones de Java se incluyen una serie de bibliotecas de clases predefinidas para diversos usos como: AWT herramientas grficas. APPLET para crear applets para el Web . IO manejo de archivos de entrada/salida. LANG objetos bsicos. UTIL utileras de uso general. NET clases para manipular URLs. JDBC clases para conectarse a bases de datos SQL, etc.

La cantidad de clases predefinidas aumenta en cada versin nueva de Java y por consecuente, el poder del lenguaje.

3.10. Definicin, creacin y reutilizacin de paquetes/libreras. Un Paquete en Java es un contenedor de clases que permite agrupar las distintas partes de un programa cuya funcionalidad tienen elementos comunes. Lgicamente un programador puede agruparlas con o sin criterio, pero lo ideal es que se dediquen a funciones especficas. Tambin los paquetes definen una jerarqua de directorios, que permiten igualmente agrupar las clases, cosa de desplegar los archivos ms ordenadamente. Tambin, cuando necesitamos libreras de java, igualmente estamos llamando a una clase especfica o a todo un paquete.
Para utilizar "Packages" en Java es necesario generar una estructura de directorios que lleven la misma secuencia de las libreras que desean disearse, observe:

Lo anterior demuestra una estructura para las libreras del dominio com.osmosislatina, se debe mencionar que no existe ninguna restriccin en el nmero de directorios anidados, esto es, es posible que existan libreras de 5 o 10 niveles de profundidad, esta sub-clasificacin se va realizando en base a los requerimientos de las libreras y es dentro de cada sub-directorio donde son colocadas las distintas Clases. Adems de la generacin de estos directorios, se debe incluir un calificador de la librera en el cdigo fuente de cada Clase:

Para emplear Libreras ("Packages") en un programa es necesario importarlas, esto es llevado a cabo mediante el calificativo import como se demuestra a continuacin:

La declaracin anterior permite que la clase Recuadro de la librera ("Package") com.osmosislatina.graficaseste disponible en el programa en cuestin, las caractersticas del uso de import son las siguientes:

Se debe declarar al inicio de un programa, antes de la definicin de la clase, aunque posterior a la definicin de package (si existiese). Se pueden utilizar un nmero ilimitado de import. Es posible importar todas las clases de una librera a travs de un asterisco (*).

3.11. Manejo de excepciones. El trmino excepcin es una forma corta da la frase "suceso excepcional" y puede definirse de la siguiente forma: Definicin: Una excepcin es un evento que ocurre durante la ejecucin del programa que interrumpe el flujo normal de las sentencias. Muchas clases de errores pueden utilizar excepciones desde serios problemas de hardware, como la avera de un disco duro, a los simples errores de programacin, como tratar de acceder a un elemento de un array fuera de sus lmites. Cuando dicho error ocurre dentro de un mtodo Java, el mtodo crea un objeto 'exception' y lo maneja fuera, en el sistema de ejecucin. Este objeto contiene informacin sobre la excepcin, incluyendo su tipo y el estado del programa cuando ocurri el error. El sistema de ejecucin es el responsable de buscar algn cdigo para manejar el error. En terminologa java, crear una objeto exception y manejarlo por el sistema de ejecucin se llama lanzar una excepcin. Cuando un programa Java viola las restricciones semnticas del lenguaje (se produce un error), la mquina virtual Java comunica este hecho al programa mediante una excepcin. La aplicacin Java no debe morir y generar un core (o un crash en caso del DOS), al contrario, se lanza (throw) una excepcin y se captura (catch) para resolver esa situacin de error. Muchas clases de errores pueden provocar una excepcin, desde un desbordamiento de memoria o un disco duro estropeado hasta un disquete protegido contra escritura, un intento de dividir por cero o intentar acceder a un vector fuera de sus lmites. Cuando esto ocurre, la mquina virtual Java crea un objeto de la clase exception o error y se notifica el hecho al sistema de ejecucin. Se dice que se ha lanzado una excepcin (Throwing Exception). Un mtodo se dice que es capaz de tratar una excep cin (Catch Exception) si ha previsto el error que se ha producido y prev tambin las operaciones a realizar para recuperar el programa de ese estado de error. En el momento en que es lanzada una excepcin, la mquina virtual Java recorre la pila de llamadas de mtodos en busca de alguno que sea capaz de tratar la clase de excepcin lanzada. Para ello, comienza examinando el mtodo donde ese ha producido la excepcin; si este mtodo no es capaz de tratarla, examina el mtodo desde el que se realiz

la llamada al mtodo donde se produjo la excepcin y as sucesivamente hasta llegar al ltimo de ellos. En caso de que ninguno de los mtodos de la pila sea capaz de tratar la excepcin, la mquina virtual Java muestra un mensaje de error y el programa termina. Los programas escritos en Java tambin pueden lanzar excepciones explcitamente mediante la instruccin throw, lo que facilita la devolucin de un cdigo de error al mtodo que invoc el mtodo que caus el error. Un manejador de excepciones es una porcin de cdigo que se va a encargar de tratar las posibles excepciones que se puedan generar. En Java, de forma similar a C++ se pueden tratar las excepciones previstas por el programador utilizando unos mecanismos, los manejadores de excepciones, que se estructuran en tres bloques: El bloque try. El bloque catch. El bloque finally (no existente en C++).

El bloque try. Lo primero que hay que hacer para que un mtodo sea capaz de tratar una excepcin generada por la mquina virtual Java es encerrar las instrucciones susceptibles de generarla en un bloque try.

Cualquier excepcin que se produzca dentro del bloque try ser analizado por el bloque o bloques catch que se ver en el punto siguiente. En el momento en que se produzca la excepcin, se abandona el bloque try y, por lo tanto, las instrucciones que sigan al punto donde se produjo la excepcin no sern ejecutadas. Cada bloque try debe tener asociado al menos un bloque catch El bloque catch.

Por cada bloque try pueden declararse uno o varios bloques catch, cada uno de ellos capaz de tratar un tipo u otro de excepcin.

Para declarar el tipo de excepcin que es capaz de tratar un bloque catch, se declara un objeto cuya clase es la clase de la excepcin que se desea tratar o una de sus superclases. Vemoslo con un ejemplo:

Cuando se intenta dividir por cero, la mquina virtual Java genera un objeto de la clase ArithmeticException. Al producirse la excepcin dentro de un bloque try, la ejecucin del programa se pasa al primer bloque catch.

Si la clase de la excepcin se corresponde con la clase o alguna subclase de la clase declarada en el bloque catch, se ejecuta el bloque de instrucciones catch y a continuacin se pasa el control del programa a la primera instruccin a partir de los bloques try-catch. Como puede verse, tambin se podra haber utilizado en la declaracin del bloque catch, una superclase de la ArithmeticException. Por ejemplo:

Sin embargo, es mejor utilizar excepciones lo ms cercanas al tipo de error previsto, ya que lo que se pretende es recuperar al programa de alguna condicin de error y si se meten todas las condiciones en el mismo saco, seguramente habr que averiguar despus qu condicin de error se produjo para poder dar una respuesta adecuada.

El bloque finally.

El bloque finally se utiliza para ejecutar un bloque de instrucciones sea cual sea la excepcin que se produzca. Este bloque se ejecutar en cualquier caso, incluso si no se produce ninguna excepcin. Sirve para no tener que repetir cdigo en el bloque try y en los bloques catch.

También podría gustarte