8
Clases La programación orientada a objetos utiliza clases para encapsular (envolver, esconder) datos (atributos) y métodos (comportamientos). Por ejemplo, el estéreo de un auto encapsula todos los atributos y comportamientos que le permiten al conductor del auto seleccionar una estación de radio, o reproducir CDs. Las compañías que fabrican autos no fabrican los estéreos, sino que los compran y sim- plemente los conectan en el tablero de cada auto. Los componentes del radio están en- capsulados en su caja. El encapsulamiento permite a los objetos ocultar su implementación de otros objetos; a este principio se le conoce como ocultamiento de información. Aunque los objetos pue- den comunicarse entre sí, a través de interfaces bien definidas (de la misma forma que la interfaz de un conductor para un auto incluye un volante, pedal del acelerador, pedal del freno y palanca de velocidad), no están conscientes de cómo se implementan otros objetos (de la misma forma que el conductor no conoce cómo están implementados los mecanismos del volante, motor, freno y transmisión). Por lo general los detalles de im- plementación se ocultan dentro de los mismos objetos. Implementación de un tipo de dato abstracto con una clase Las clases en Java facilitan la creación ADTs (tipos de datos abstractos), los cuales ocultan su implementación a los clientes (o usuarios de la clase). Un problema en los lenguajes de programación por procedimientos es que el código cliente a menudo de- pende de los detalles de implementación de los datos utilizados en el código. Esta de- pendencia tal vez requiera reescribir el código cliente, si la implementación de los datos cambia. Los ADTs eliminan este problema al proporcionar interfaces (conjuntos de métodos ofrecidos por las clases) independientes de la implementación a sus clientes. Es posible para el creador de una clase cambiar la implementación interna de esa clase sin afectar a los clientes de esa clase. Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar. Características de las clases: es una plantilla o modelo que define los atributos y métodos comunes a todos los objetos de un cierto tipo. Clase: Implementación de un tipo de dato. Una clase sirve tanto de módulo como de tipo. Tipo: Descripción de un conjunto de objetos (equipados con ciertas operaciones) Módulo: Unidad de descomposición del software. Definición de una clase Para definir una clase en Java se utiliza la palabra reservada class, seguida del nombre de la clase (un identificador). Ejemplo vamos a definir una clase Chipero

definicion de clases

Embed Size (px)

DESCRIPTION

ing. en sistemas computacionales

Citation preview

Page 1: definicion de clases

Clases La programación orientada a objetos utiliza clases para encapsular (envolver, esconder) datos (atributos) y métodos (comportamientos). Por ejemplo, el estéreo de un auto encapsula todos los atributos y comportamientos que le permiten al conductor del auto seleccionar una estación de radio, o reproducir CDs. Las compañías que fabrican autos no fabrican los estéreos, sino que los compran y sim-plemente los conectan en el tablero de cada auto. Los componentes del radio están en-capsulados en su caja. El encapsulamiento permite a los objetos ocultar su implementación de otros objetos; a este principio se le conoce como ocultamiento de información. Aunque los objetos pue-den comunicarse entre sí, a través de interfaces bien definidas (de la misma forma que la interfaz de un conductor para un auto incluye un volante, pedal del acelerador, pedal del freno y palanca de velocidad), no están conscientes de cómo se implementan otros objetos (de la misma forma que el conductor no conoce cómo están implementados los mecanismos del volante, motor, freno y transmisión). Por lo general los detalles de im-plementación se ocultan dentro de los mismos objetos. Implementación de un tipo de dato abstracto con una clase Las clases en Java facilitan la creación ADTs (tipos de datos abstractos), los cuales ocultan su implementación a los clientes (o usuarios de la clase). Un problema en los lenguajes de programación por procedimientos es que el código cliente a menudo de-pende de los detalles de implementación de los datos utilizados en el código. Esta de-pendencia tal vez requiera reescribir el código cliente, si la implementación de los datos cambia. Los ADTs eliminan este problema al proporcionar interfaces (conjuntos de métodos ofrecidos por las clases) independientes de la implementación a sus clientes. Es posible para el creador de una clase cambiar la implementación interna de esa clase sin afectar a los clientes de esa clase. Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar. Características de las clases: es una plantilla o modelo que define los atributos y métodos comunes a todos los objetos de un cierto tipo. Clase: Implementación de un tipo de dato. Una clase sirve tanto de módulo como de tipo.

• Tipo: Descripción de un conjunto de objetos (equipados con ciertas operaciones)

• Módulo: Unidad de descomposición del software. Definición de una clase

Para definir una clase en Java se utiliza la palabra reservada class, seguida del

nombre de la clase (un identificador). Ejemplo vamos a definir una clase Chipero

Page 2: definicion de clases

Cuerpo de una clase El cuerpo de una clase contiene dos secciones:

1. Declaración de sus atributos. 2. Definición de sus métodos.

Los límites de la clase se marcan con { }

Declaración de atributos Los atributos se declaran dentro de las llaves de apertura y cierre de la declara-

ción de la clase. Se declaran igual que las variables locales de un método.

Cuando se realiza una instancia o se crea un objeto de una clase se reservará en memo-ria un espacio para un conjunto de datos con el que se definen las variables de una cla-se. A este conjunto de variables se le denomina variables de instancia

Métodos Ya hemos aprendido a definir distintos tipos de métodos de Java. En nuestra clase Chipero vamos a definir dos métodos

1. venderChipa(), este método va ser un método con parámetro, a través del parámetro se le indica la cantidad de chipa a vender

2. rendirSaldo(), este método retorna valor, es decir, la cantidad de chipa que sobró.

Page 3: definicion de clases

Constructores

Las clases pueden implementar un método especial llamado constructor. Un

constructor es un método que inicializa un objeto inmediatamente después de su crea-ción. De esta forma nos evitamos el tener que inicializar las variables explícitamente para su inicialización

El constructor tiene exactamente el mismo nombre de la clase que lo imple-menta. Una vez definido, se llamará automáticamente al constructor al crear el objeto de esa clase (al utilizar el operador new)

El constructor no devuelve ningún tipo. Su misión es inicializar las variables de instancia de un nuevo objeto haciendo que el objeto sea utilizable inmediatamente; re-servando memoria para sus variables, iniciando sus valores Constructor por defecto

Java por defecto crea automáticamente un constructor sin parámetros para cual-quier clase que definamos.

Ejemplo:

Page 4: definicion de clases

Entonces al crear un objeto de la clase Chipero

Creamos un objeto juan, pero sin inicializar sus variables de instancia (nombre, cant-Chipa), por lo tanto si invocamos el método juan.venderChipa(12), no se podría realizar la operación de venta, porque aún no se ha inicializado sus variables de instancia Si la clase no tiene ningún constructor, se utiliza un constructor por defecto que no ini-cializará las variables de instancia de sus objetos. Constructores definidos por el usuario

Java nos permite definir constructores para especificar cómo han de inicializarse los objetos al crearlo. Entonces podemos definir un constructor para inicializar las variables de instancia de una clase, en vez de hacerlo en la propia declaración de las variables de instancia.

Page 5: definicion de clases

Constructores con parámetros:

En cuanto definimos un constructor, ya no podemos utilizar el constructor por defecto de la clase (el constructor que Java ha creado automáticamente si no especificamos nin-guno).

Ejemplo:

Ahora deberá ser así: Importante: Para facilitarnos la creación de objetos, Java nos permite definir

varios constructores para una misma clase (siempre y cuando tengan parámetros dife-rentes).

Page 6: definicion de clases

Referencia this Uno de los usos de la palabra reservada this se da cuando una variable local de un método tiene el mismo nombre (por ejemplo: nombre de la clase Chipero) que una va-riable de instancia de la clase, por lo que el método no se puede referir a la variable de instancia como nombre; esto haría referencia en realidad a la variable local. Para evitar este inconveniente, se podría haber cambiado el nombre de la variable local a nombreChipero. Sin embargo, ya que tenemos la palabra reservada this que hace refe-rencia siempre al objeto que actualmente está ejecutando el método, podemos utilizar para indicar de forma no ambigua que un identificador se refiere a una variable de ins-tancia, simplemente añadimos “this” al identificador, como se muestra, en la siguiente línea de código:

Control de acceso a los miembros de una clase

Las clases pueden proteger sus métodos y variables de instancia del acceso por parte de otros objetos. Como una regla general, vamos a hacer que todas las variables de instancia sean priva-das (private) y la mayoría de nuestros métodos públicos (public). Ejemplo: para que no ocurra esto chipero1.cantChipa = 30, este procedimiento modi-fica el valor de la variable de instancia cantChipa.

Para evitar este inconveniente debemos proteger nuestras variables de instancia.

Page 7: definicion de clases

Ejemplo:

Control de acceso a los miembros Los modificadores de acceso public y private controlan el acceso a los atributos y los métodos de una clase. El principal propósito de los métodos public es presentar a los clientes de la clase una vista de los servicios que la clase proporciona (la interfaz públi-ca de la clase). Los clientes de la clase no necesitan preocuparse acerca de cómo la cla-se realiza sus tareas. Por esta razón, las variables y métodos private de una clase (los detalles de implementación de la clase) no son directamente accesibles para los clientes de una clase. Al proceso de restringir al acceso a los miembros de una clase mediante la palabra reservada private se le conoce como ocultamiento de información. Los atributos o métodos declarados con el modificador de acceso private pueden ser utilizados solamente por los métodos de la clase en la que están declarados.

Ejemplo: Observaciones: • Si los miembros de una clase son privados quiere decir que no se puede ac-

ceder a ellos desde el exterior de la clase. • Todas las variables de instancia de una clase deben mantenerse como priva-

te. Cuando sea necesario, proporcione métodos public para cambiar los va-lores de las variables de instancia private y para recuperar sus valores. Esta arquitectura ayuda a ocultar la implementación de una clase de sus clientes, lo cual mejora la capacidad de modificación de los programas.

• Al hacer que las variables de instancia de una clase sean private y que los métodos de la clase sean public se facilita la depuración, ya que los proble-mas con la manipulación de los datos se localizan en los métodos de la clase.

• El conjunto de métodos public de una clase se conoce como la interfaz pública de la clase.

• Los valores de las variables de instancia de un objeto constituyen su estado • La clases = atributos + métodos

Page 8: definicion de clases