02 java poo_parte_1

31
Prof. Renny Batista Lenguaje Java 1 Programación Orientada a Objetos I Programación Orientada a Objetos I

Upload: instituto-universitario-de-tecnologia-antonio-jose-de-sucre

Post on 12-Jun-2015

953 views

Category:

Education


0 download

DESCRIPTION

Introducción al lenguaje de programación Java

TRANSCRIPT

Page 1: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 1

Programación Orientada a Objetos IProgramación Orientada a Objetos I

Page 2: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 2

Contenido

Evolución de la Programación

Introducción a la programación orientada a objetos (POO)

Conceptos Básicos de la POO

Clases

Objetos

Atributos y Métodos

Sobrecarga de métodos

Encapsulación

Constructores

Paquetes

Page 3: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 3

POO - Evolución

Evolución Tecnológica

Programación HexadecimalProgramación EnsambladorProgramación alto nivelProgramación Orientada a Objetos

Evolución Conceptual

Programación Lineal Programación EstructuradaProgramación Orientada a Objetos

Page 4: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 4

POO – Evolución de los lenguajes orientados a objetos

Algol

PascalCLU CSmalltalk

Simula

Basic

Ada

Ada - 95

Object Pascal

Borland Pascal

Delphi

Actor Objetive-C C++ Visual Basic

Visual Basic .NetJava

Java2

Page 5: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 5

POO - Clasificación de los lenguajes orientados a objetos

Clasificación de los lenguajes orientados a objetosWegner, Peter [1987]

Basados en Objetos

Basados en Clases

Orientados a Objetos

+ clases

+ herencia

Page 6: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 6

POO - Clasificación de los lenguajes orientados a objetos

La clasificación de Wegner divide los lenguajes en tres categorías:

Lenguajes basados en objetos que soportan objetos Es decir, disponen de componentes caracterizados por un conjunto de operaciones (comportamiento) y un estado.

Lenguajes basados en clases que implican objetos y clases Es decir, disponen de componentes tipo clase con operaciones y estado común. Una clase de un objeto se construye con un «interfaz» que especifica las operaciones posibles y un «cuerpo» que implementa dichas operaciones.

Lenguajes orientados a objetos que además de objetos y clases ofrecen mecanismos de herencia entre clases. Esto es, la posibilidad de derivar operaciones y atributos de una clase (superclase) a sus subclases.

Page 7: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 7

POO – Conceptos Básicos

POO no es :Un sistema de ventanas, ratones, iconos, etcUn lenguaje de programación.

POO es :La programación orientada a objeto puede describirse como el conjunto de disciplinas (ingeniería) que desarrollan y modelizan software que facilitan la construcción de sistemas complejos a partir de componentes.

Page 8: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 8

POO – Conceptos Básicos

“Tenemos un carro y queremos aumentar su potencia…”

Opción Tradicional :Construir un carro nuevo

Opción POO :Cambiamos el carburadorCambiamos las ruedas por otras más anchasAñadimos un sistema turbo

Page 9: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 9

Características de la POO

Los cuatro pilares de la programación orientada a objetos son: Abstracción, Encapsulación, Herencia y Polimorfismo.

Page 10: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 10

Elementos de la OOP en Java

Page 11: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 11

Clases

Concepto de claseUna clase es una plantilla a partir de la cual se puede crear objetos. Una clase es una estructura de datos que encapsula variables (atributos) y funciones miembro (métodos). Se puede decir que una clase es una colección de objetos similares.

public class Nombre_clase {

// Declaración de campos o atributos

// Definición de métodos

}

La palabra class puede estar precedida por el modificador de acceso public.La clase se guarda en un archivo .java cuyo nombre tiene que ser exactamente el mismo que el de la clase.Una vez definida la clase con sus métodos, los programadores podrán crear objetos de la clase (instancias).

Page 12: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 12

Objetos

Concepto de objeto.Un objeto es una instancia de una clase, un ejemplo concreto de esa clase; al igual que una variable es una instancia de un tipo de dato.Para crear un objeto se llama al constructor de la clase (un método o función con el mismo nombre que la clase) con el operador: new.

public class Principal {

public static void main(){

Nombre_clase nc = new Nombre_clase();

nc.miMetodo();

}

}

Variable que almacenará la referencia al objeto Creación del objetoLlamada a los métodos

del objeto

Page 13: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 13

Atributos

Propiedad o atributo: Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles o no desde fuera del objeto y esto se define como las características predeterminadas de un objeto, y cuyo valor puede ser alterado por la ejecución de algún método.

public class Nombre_Clase {

private tipo idAtributo;

// Otros atributos

}

Tipo de dato almacenado en el atributo

Page 14: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 14

Miembros de una clase (Métodos)

Los métodos definen el comportamiento de los objetos de una clase, estos métodos pueden hacer uso campos o atributos para almacenar información sobre el objeto, información que puede ser utilizada posteriormente por cualquiera de los métodos del objeto.

Se accede a los miembros de un objeto a través del operador punto (.)

Un método también es un bloque de código al que se le puede transferir el control de ejecución de un programa y ejecutar dicho código.

Los métodos se suelen dividir en los que se usan internamente en la clase (métodos private) y los que son accesibles desde el exterior de la clase (métodos public).

Page 15: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 15

Métodos

Declaración de un método

public class Nombre_Clase {

private tipo idAtributo;

// Otros atributos

[acceso] tipo nombreMétodo (tipo parámetro1, tipo parámetro2,..) {

// Código del método

[return valor;]

}

// Otros métodos

}

Tipo de dato almacenado en el atributo

Tipo de dato devuelto por el método

Parámetros de Llamada

Valor devuelto por el método

Page 16: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 16

Métodos

Invocación al Método

objeto.metodo(argumento1, argumento2);Llamada al

método

Declaración del método

tipo método(tipo parametro1, parametro2){

.

.

.

}

Page 17: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 17

Métodos

Ejemplos de métodos

public void saludar10Veces (String nombre) {

for ( int i=0; i<10; i++ )

System.out.println(“Hola ”+nombre);

}

private int sumar (int n1, int n2) {

int s;

s = n1 + n2;

return (s);

}

Page 18: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 18

Métodos y Atributos Estáticos

Los métodos estáticos son aquellos que no dependen de un objeto particular de la clase, se les puede invocar sin necesidad de crear objetos utilizando la siguiente sintaxis:

Los atributos estáticos deben llevar un modificador de acceso que permita su uso desde el exterior de la misma, este puede ser public, protected o ninguno. Un método estático no puede hacer referencia a elementos no estáticos de su misma clase.Un método estático no puede hacer uso de la palabra reservadas supery this.

Nombre_Clase.metodo();

Page 19: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 19

Métodos y Atributos Estáticos

Declaración de un método estático

public class Nombre_Clase {

static tipo idAtributo;

// Otros atributos

static tipo nombreMétodo (parámetro) {

// Código del método

[return valor;]

}

// Otros métodos

}

Palabra reservada para la definición de elementos

estáticos

Page 20: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 20

El método main()

Toda aplicación Java está compuesta por al menos una clase. La cual debe contener un método estático llamado main() que esta declarada con el modificador de acceso public. Este método es el punto de arranque de un programa Java.

El método main() debe cumplir con las siguientes características:Ha de ser un método publico.Ha de ser un método estático.No puede devolver ningún resultado (tipo void)Ha de declarar un array de cadenas de caracteres en la lista de parámetros o un número variable de argumentos.

public class Nombre_Clase {

public static void main(String[] args) {

// Código del método

}

}

Page 21: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 21

Sobrecarga de métodos

Otra de las ventajas que nos ofrece la POO es poder tener en una misma clase varios métodos con el mismo nombre, a esto se le llama sobrecarga de métodos.

Para que un método pueda sobrecargarse es imprescindible que se de la siguiente condición: cada versión del método debe distinguirse de las otras en el numero o tipo de parámetro.

public class Nombre_Clase {

public void asignarDatos(String nombre) {

}

public void asignarDatos(String nombre, int edad) {

}

}

Page 22: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 22

Constructores

¿Qué es un constructor?Un constructor es una función o método que se llama automáticamente al crear un objeto de una clase.

El constructor reserva memoria para el objeto e inicializa sus variables.

Los constructores no tienen valor de retorno (ni void) y tienen el mismo nombre que la clase.

class Mi_Clase {public Mi_Clase(){

// tareas a hacer al crear un objeto// de tipo MiClasecilla

}}

Page 23: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 23

Constructores

Múltiples constructoresUna clase puede tener varios constructores, cada uno con parámetros de entrada diferentes.

Un constructor de una clase puede llamar a otro constructor de la misma clase en su primera línea de código, usando el operador this:

class Mi_Clase {String cadenaDeClase;// Este constructor llama al otropublic Mi_Clase(){

this(“Relleno cadena”);}public Mi_Clase(String cadena) {

cadenaDeClase = cadena;}

}

Page 24: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 24

Encapsulación

¿Qué es la encapsulación?La encapsulación es una de las características de la POO mediante la cual se protege el acceso a los datos y funciones de un programa mediante sus modificadores de acceso.

Por defecto, una clase, sus funciones y sus variables solo son accesibles desde otra clase del mismo paquete.

Page 25: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 25

Modificadores de Acceso

Los modificadores de acceso se utilizan para definir la visibilidad de los miembros de una clase (atributos y métodos) y de la propia clase. En Java existen cuatro modificadores de acceso.

private: Su uso está restringido al interior de la clase. Lo que significa que solamente puede ser utilizado en el interior de su misma clase. Este modificador puede ser aplicado a métodos y atributos, pero no a la clase.

(ninguno): La no utilización de modificador proporciona lo que se conoce como el acceso por defecto. Si una clase, atributo o método tienen acceso por defecto, únicamente las clases de su mismo paquete tendrán acceso al mismo.

protected: Es empleado en la herencia. Cualquier método o atributo definido como protected en una clase puede ser utilizado por cualquier otra clase de su mismo paquete y además por cualquier subclase de ella, independientemente del paquete en que esta se encuentre. Una clase no puede ser protected, sólo sus miembros.

public: Este modificador ofrece el máximo nivel de visibilidad. Un elemento (clase, método o atributo) public será visible desde cualquier clase, independientemente del paquete en que se encuentre.

Page 26: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 26

Organización de Clases: Los Paquetes

¿Qué es un paquete?Un paquete es un directorio en el que se almacenan los archivos .class con los bytecodes de la clase; un paquete puede a su vez estar compuesto de otros subpaquetes.

String.class

java

lang

java.lang.StringPaquete principal

Subpaquete

Clase

Page 27: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 27

Organización de Clases: Los Paquetes

Ventajas de la utilización de paquetes

Permiten organizar las clases de manera estructurada. Los paquetes permiten agrupar clases que tengan algún tipo de relación lógica. Esto facilita su localización y utilización en un programa.

Evitan conflictos de nombres. Una clase localizada en un determinado paquete se identifica mediante lo que se conoce comonombre cualificado de la clase. Este se compone del nombre de la clase, precedido por los nombres de los subpaquetes hasta llegar al paquete principal, separados por un “.” Esto permite que en un programa se pueda utilizar dos o mas clases que tengan el mismo nombre y que se encuentren en distintos paquetes.

Page 28: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 28

Importar clases y paquetes de clases

Para importar una clase se utiliza la sentencia import al principio del archivo de código .java, antes de la definición de la clase:

import java.util.Vector;

public class Nombre_Clase {

public static void main(String[] args) {

Vector v;

}

}

public class Nombre_Clase {

public static void main(String[] args) {

java.util.Vector v;

}

}

Nombre cualificado de

la clase

Importa la clase para su utilización

Page 29: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 29

Paquetes de uso general

java.lang: Incluye las clases de uso fundamentales para la realización de cualquier programa en Java. Dado que sus clases son de uso común en los programas, el compilador importa el paquete completo de forma implícita. Por lo que no deberá utilizarse la sentencia import para importar clases de este paquete.

java.io: Contiene las clases para gestión de entradas y salidas de datos en java. Independientemente del dispositivo E/S que se utilice. Java utiliza siempre las mismas clases para enviar datos a la salida y leer datos de la entrada.

java.util: En este paquete encontraremos clases para utilidades varias, tales como el tratamiento de colecciones de objetos, la manipulación de fechas o la construcción de expresiones regulares.

Page 30: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 30

Ejercicio

Se pretende desarrollar una aplicación que simule el funcionamiento de un cajero automático. Primero se debe crear una clase llamada Cuenta, que administre las operaciones sobre la cuenta. Además del constructor y atributos que se estimen necesarios la clase contará con los métodos:

void ingresar(float c). Agrega al saldo de la cuenta la cantidad recibida.void extraer(float c) Descuenta del saldo la cantidad recibida. Tras la llamada a este método el saldo no podrá quedar en negativo.float getSaldo(). Devuelve el saldo actual.

Por otro lado, existirá una clase con el método main encargada de la captura y presentación de datos y administración de la cuenta. Al iniciarse la aplicación se mostrará el siguiente menú.

1. Crear cuenta vacía2. Crear cuenta saldo inicial3. Ingresar dinero4. Sacar dinero5. Ver saldo6. Salir

Page 31: 02 java poo_parte_1

Prof. Renny Batista Lenguaje Java 31

Ejercicio Continuación

La opción 1 crea un objeto Cuenta con saldo 0, la opción 2 solicita una cantidad y crea un objeto Cuenta con ese saldo inicial.

En la opción 3 se solicita una cantidad y la ingresa en el objeto creado en las opciones 1 y 2 (debe haber pasado antes por estas opciones), mientras que la opción 4 se solicita una cantidad y la extrae del objeto creado en las opciones 1 o 2 (también debe haber pasado antes por estas opciones).

Finalmente, la opcion 5 muestra el saldo, mientras que la 6 finaliza el programa, lo que provocará que el objeto Cuenta se destruya y se pierda el saldo.

El menú vuelve a presentarse en pantalla mientras no se elija la opción de salir