Programación Orientada a Objetos (POO)

Anuncio
1
Prof.: Evelyn Sánchez G.
Programación Orientada a Objetos (POO)
Es un modelo de programación que intenta simular el mundo real a través del significado de objetos.
Puede considerarse como una extensión natural de la programación estructurada en un intento de potenciar
los conceptos de modularidad y reutilización de código.
Un programa orientado a objetos, se compone “solo” de objetos. Entendiendo por objeto una
encapsulación genérica de datos y de las subrutinas que permiten manipular a dichos datos.
Un objeto almacena los datos en campos llamados atributos (propiedades) y las subrutinas que permiten
trabajar con estos datos, reciben el nombre de métodos.
Gráficamente:
atributos
métodos
La ocultación de los atributos y el requerir de los métodos para interactuar con ellos, se conoce como
encapsulación.
Ejemplo de un objeto software
Consideremos una entidad bancaria. En ella identificamos entidades que son cuentas (cuentas corrientes,
cuenta vista, cuenta de ahorro hipotecario, …)
Una cuenta puede ser considerada un objeto. Si consideramos, por ejemplo, una cuenta corriente, entre
otros, podría tener los atributos nombre, nº de cuenta y saldo, y métodos como deposito, giro, saldoActual,
transferencia.
Prof.: Evelyn Sánchez G.
2
Concepto de Clase
Una clase es una agrupación de datos (atributos) y de funciones (métodos) que operan sobre esos datos. A
estos datos y métodos pertenecientes a una clase se les denomina variables miembros y métodos miembros
respectivamente. La POO se basa en la programación de clases. Un programa se construye a partir de un
conjunto de clases.
Una vez definida e implementada una clase, es posible declarar elementos de esta clase de modo similar a
como se declara una variable. Los elementos declarados de una clase se denominan objetos de la clase. De
una única clase se pueden declarar o crear numerosos objetos. La clase es lo genérico, es el patrón o
modelo para crear objetos. Cada objeto tiene sus propias copias de las variables miembros (atributos), con
sus propios valores, en general distintos de klos demás objetos de la clase. Las clases pueden tener
variables static, que son propias de la clase y no de cada objeto.
Algunos de los conceptos más importantes de la POO son:
 Encapsulación
Las clases pueden ser declaradas como públicas (public) y como package (accesibles sólo para las
clases del package). Las variables miembros y los métodos puedens er public, private, protected. De
esta forma se puede controlar el acceso y evitar un uso inadecuado.
 Herencia
Una clase puede derivar de otra (extends), y en ese caso hereda todas sus variables y métodos. Una
clase derivada puede agregar nuevas variables y métodos y/o redefinir las variables y métodos
heredados.
 Polimorfismo
Los objetos de distintas clases pertenecientes a una misma jerarquía o que implementan una misma
interface1, pueden tratarse de una forma general e individualizada, al mismo tiempo.
1
Una interface es un conjunto de declaraciones de métodos
3
Prof.: Evelyn Sánchez G.
Tipos de Datos
Los tipos de datos en Java se clasifican en:
 Tipos primitivos: Están integrados en el sistema y en realidad NO son objetos. Hay 8 tipos
primitivos, clasificados en tipos numéricos (enteros y reales) y tipo bolean.
 Tipos referenciados: Hay 3 tipos de datos referenciados y éstos son clases, interfaces y arrays.
Tipos Primitivos
 Tipos Enteros
o
byte: es un conjunto de 8 bits, se utiliza para enteros comprendidos entre
o
short: es un dato de 16 bits de longitud. Se usa para enteros cuyo valor mínimo es -32.767 y
valor máximo 32.767
o
int: es un dato de 32 bits de longitud. Su valor mínimo es -2.147.483.648 y el máximo
2.147.483.647
o
long: es un dato de 64 bits de longitud. Sus valores mínimos y máximos son
9.223.372.036.854.775.808 y 9.223.372.036.854.775.807
o
char: es utilizado para declarar enteros en el rango \u0000 a \uFFFF en Unicode (0 a 65535). Los
valores 0 a 127 corresponden con los caracteres del código ASCII. En Java para representar los
caracteres se utiliza el código Unicode, que es un código de 16 bits (2 bytes), con el único
propósito de internacionalizar el lenguaje.
-128 y 127
-
 Tipos Reales
o
float: se utiliza para declarar un dato en coma flotante de 32 bits en el formato IEEE754 (1 bit
para el signo, 8 para el exponente y 24 para la mantisa). Almacena valores con una precisión
aproximada de 7 dígitos (decimales). Su rango es de -3.402823E38 a -1.401298E-45 y de
1.401298E-45 a 3.402823E38.
Para especificar un valor constante de tipo float, es requisito escribir al final de su valor, la letra F
o f. Por ejemplo 3.1415F
o
double: se utiliza para declarar un dato en coma flotante de 64 bits (1 para el signo, 11 bits para el
exponente y 52 para la mantisa). Almacena valores con precisión aproximada de 16 dígitos. El
rango de los datos tipo double es de -1.79769313486232E308 a -4.9406564584124E-324 y de
4.9406564584124E-324 a 1.79769313486232E308
 Tipo boolean, se utiliza para indicar si el resultado de la evaluación es verdadero o falso. Las palabras
true y false, son palabras claves en el lenguaje Java.
4
Prof.: Evelyn Sánchez G.
Identificadores
Corresponde al nombre que se le da a una variable, a un objeto, a un método, a una clase, …
Son caracteres válidos para un identificador: letras, dígitos, símbolo de subrayado y signo $. Puede
comenzar con letra, símbolo de subrayado o signo $.
Las letras pueden ser en mayúscula o minúscula, siendo distintas las mayúsculas de las minúsculas.
No puede ser utilizado como identificador una palabra clave, pues éstas son identificadores
predeterminados que tienen un significado especial para el compilador de Java.
Palabras Claves son:
abstract
default
if
private
throw
boolean
do
implements
protected
throws
break
double
import
public
transient
byte
else
instanceof
return
try
case
extends
int
short
void
catch
final
interface
static
volatile
char
finally
long
super
while
class
float
native
switch
const
for
new
synchronized
continue
goto
package
this
Comentarios
Los comentarios corresponden a instrucciones no ejecutables. En Java se pueden realizar de 2 formas:
/* texto de comentario */
// texto de comentario
AL usar /* */, se puede comentar una o más líneas, sin embargo al usar // el comentario es por línea.
Además, existe el comentario de documentación, que permite generar un documento de texto con lo
escrito dentro de los símbolos. Esto son:
/** texto */
5
Prof.: Evelyn Sánchez G.
Declaración de Variables
Una variable representa un espacio de memoria para almacenar un valor de un determinado tipo.
Una variable puede ser de tipo primitivo o de tipo referenciado. Desde el punto de vista del papel o misión
en el programa, las variables pueden ser:

Variables miembro de una clase

Variables locales.
Las variables miembros de la clase, son aquellas que se declaran dentro de una clase, pero fuera de
cualquier otro bloque. También reciben el nombre de atributos de la clase. Estas pueden ser accedidas
desde todos los métodos de la clase que no sean static.
Las variables locales, son aquellas que se declaran dentro de un método o dentro de cualquier bloque (en
un bloque de instrucciones que están dentro de { }, en un ciclo for antes del nombre de la variable que lo
controla, al especificar su valor inicial). Una variable local puede ser de tipo primitivo o referenciada,
pero NO puede ser de tipo static. Al momento de declarar una variable local se crea (se le asigna una
dirección de memoria en la RAM) y se destruye (se libera el espacio de memoria asignado) al finalizar el
método, ciclo o bloque en el que fue declarada.
Las variables miembros de una clase, son inicializadas por el compilador Java para cada objeto que se
declare de la misma. (Las numéricas en 0, los caracteres con ‘\0’, las referenciadas y String en null)
Las variables locales deben ser inicializadas antes de ser utilizadas.
El formato general para declarar una variable es: tipo identificador;
Operadores
 Aritméticos
Operador
Operación
+
Suma operandos reales o enteros
–
Resta operandos enteros o reales
*
Multiplica operandos enteros o reales
/
Divide operandos enteros o reales
%
Obtiene el resto de un cuociente entero, entre operandos enteros
 Lógicos
Operador
Operación
&&
Y
||
O
!
No
6
Prof.: Evelyn Sánchez G.
 Relacionales
Operador
 Asignación
=
 Incremento
++
 Decremento
––
Operación
>
Mayor que
>=
Mayor o igual que
<
Menor que
<=
Menor o igual que
==
Igual
!=
Distinto
Estructuras de Control
Sentencia IF – ELSE
i f (condición)
{
Instrucciones que se realizan si la condición es verdadera
}
else
{
Instrucciones que se ejecutan si la condición es falsa
}
Sentencia SWITCH
switch (expresión)
{
case valor1:
instrucciones
break;
...
case valork:
default:
}
instrucciones
break;
instrucciones
7
Prof.: Evelyn Sánchez G.
Sentencia WHILE
while (condición)
{
instrucciones
}
Sentencia FOR
for (variable=valor_inicial; condición; aumento/disminución)
{
instrucciones;
}
Sentecia DO-WHILE
do
{
instrucciones
}while(condición);
Sentencia BREAK
Al utilizar la sentencia break dentro de un ciclo, finaliza la ejecución de éste.
Ejemplo:
Cuando encuentre un dígito par en la variable num, da mensaje y sale del
ciclo.
while (num != 0)
{
if ((num % 10) % 2 == 0)
{
System.out.println(“El numero posee un dígito par”);
break;
}
num /= 10;
}
Sentencia CONTINUE
Obliga a ejecutar la siguiente iteración del ciclo en el que está contenida.
Ejemplo:
Muestra el contenido de la variable i en el rango 1 y 200, siempre que no
sea un número divisible por 5. En ese caso la sentencia continue obliga a
incrementar el valor en i.
for (int i=0; i<=200;i++)
{
if (i % 5 == 0) continue;
System.out.println (i +” “);
}
8
Prof.: Evelyn Sánchez G.
Definición de una Clase
Una clase es un tipo definido por el usuario que describe los atributos y los métodos de los objetos que se
crearán a partir de la misma.
El nombre del archivo que contenga una clase debe tener el mismo nombre de ésta, y su extensión debe
ser .java.
Los atributos definen el estado de un determinado objeto y los métodos son las operaciones que definen su
comportamiento. Forman parte de estos métodos los constructores, que permiten inicializar los atributos.
Los atributos y los métodos se denominan en general, miembros de la clase.
class nombre_clase
{
cuerpo de la clase
}
El cuerpo de la clase en general consta de modificadores de acceso, atributos y métodos
Los modificadores de acceso especifican el ámbito de accesibilidad. Estos pueden ser:

public: Un miembro declaraso public, está accesible para cualquier otra clase o subclase que
necesite utilizarlo.

private: Un miembro declarado private 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.

protected: Un miembro declarado como protected se comporta exactamente igual que un private
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 al que pertenezcan, en este caso se comporta como
un miembro public.
Los atributos constituyen la estructura interna de los objetos de una clase. Para declararlos se utiliza el
formato:
[modificador_acceso] tipo identificador;
Método es una colección de sentencias que ejecutan una tarea específica. En Java, un método siempre
pertenece a una clase y su definición nunca puede contener a la definición de otro método, esto es, no se
permiten métodos anidados. La sintaxis para su definición es:
[modificador_acceso] tipo_resultado nombre ( [lista de argumentos] )
{
declaraciones locales;
sentencias;
[return expresión ;]
}
9
Prof.: Evelyn Sánchez G.
Constructor es un método especial de una clase, el que es llamado al momento en que se crea un objeto
de la misma. Su función es iniciar los atributos de su clase.
El constructor debe tener el mismo nombre que la clase y no tiene tipo. Una clase puede tener uno o más
constructores.
nombre_clase ( )
{
atributo = valor_constante;
}
nombre_clase ( lista de argumentos )
{
atributo = argumento;
}
Accesador es un método que permite retornar el valor que contiene de un atributo
tipo getNombreAtributo()
{
return atributo;
}
Mutador es un método que permite modificar el contenido de un atributo, una vez que el objeto ya fue
creado.
void setNombreAtributo (tipo argumento)
{
atributo = argumento;
}
Método main
Toda aplicación Java tiene un método main. Éste es el punto de entrada de la aplicación y también el
punto de salida.
public static void main (String [ ] args)
{
Cuerpo del método main
}
Crear Objetos de una Clase
Para crear un objeto de una clase se debe utilizar el operador new.
nombre_objeto = new constructor ( [lista de parámetros] )
o
nombre_clase nombre_objeto = new constructor ( [lista de parámetros] );
Cuando se crea un objeto, Java hace lo siguiente:

Asigna memoria para el objeto por medio del operador new.

Inicia los atributos de ese objeto, a través del constructor.
10
Prof.: Evelyn Sánchez G.
Como Acceder a los Miembros de una Clase
Para acceder desde un método de la clase aplicación o de cualquier otra clase, a un miembro de
de un objeto, se utiliza la sintaxis:
objeto.miembro
Descargar