CONCEPTOS
BÁSICOS DE LA
POO
Prof. Aimara Cova
[email protected]Programación Orientada a Objetos
Paradigma de programación que concibe a un sistema
como un conjunto de entidades que representan al
mundo real, los “objetos”, que tienen distribuida la
funcionalidad e información necesaria y que cooperan
entre sí para el logro de un objetivo común.
SISTEMA
Programación Orientada a Objetos
ORÍGENES.
La Programación Orientada a Objetos tiene su origen en el lenguaje Simula 67
lanzado en 1967
Creado por Ole-JohanDahl y Kristen Nygaardy en el Centro de Computación
Noruego de Oslo.
El Objetivo del lenguaje era la implementación de la simulación de naves de
manera simple y óptica.
Pensaron en agrupar los distintos tipos de naves en varias clases de objetos,
considerando cada clase de objeto como responsable de definir sus propios
datos y comportamientos.
Programación Orientada a Objetos
FUNDAMENTO.
Modela y Representa Objetos del Mundo Real
P.O.O. Mundo Real
Objeto 2
Objeto 1 Objeto 3
Atributos Características
Métodos Comportamientos
Programación Orientada a Objetos
OBJETOS
Qué raza es el perro?
De qué color es?
De quien es el perro?
Qué puede hacer el perro?
Nombre de perro?
Programación Orientada a Objetos
OBJETOS
Un objeto es una combinación de propiedades o atributos que
describen al objeto y una serie de métodos o acciones que puede
ejecutar el objeto.
Perro
CARACTERÍSTICAS
Nombre: Milo
Propietario: John
Raza: Terrier
Color: blanco y marrón
:
COMPORTAMIENTOS
comer()
saltar() Los objetos se crean a partir de la
ladrar instanciación de una clase
:
Programación Orientada a Objetos
Clase
Una Clase es una plantilla genérica que contiene características
(atributos) y comportamientos(métodos)para un conjunto de
objetos similares.
CLASE PERRO CLASE PERRO: Perro1 CLASE PERRO: Perro2
CARACTERÍSTICAS CARACTERÍSTICAS CARACTERÍSTICAS
Nombre Nombre: Milo Nombre: Nina
Propietario Propietario: John Propietario: Aimara
Raza Raza: Terrier Raza: Puddler
Color Color: blanco y marrón Color: blanco
: : :
COMPORTAMIENTOS COMPORTAMIENTOS COMPORTAMIENTOS
comer() comer() comer()
saltar() saltar() saltar()
ladrar ladrar ladrar
: : :
Programación Orientada a Objetos
Instanciación.
Instanciar se refiere la materialización de una clase, es decir, son objetos concretos que tienen
su propio estado (los valores de sus atributos) y su propio comportamiento (los métodos que
pueden ejecutar).
Proceso de Instanciación:
Perro miPerro ; miPerro •
null
Se crea el la variable miPerro y se aloja en la Pila o Satck Apunta a referencia
Stack NULL
miPerro = new Perro(“Milo”,”John”,
miPerro Heap
“Terrier”,”Blanco y Negro”); Obj
Miperro guarda la
dirección de memoria
Heap donde está el Se crea el objeto Perro y se instancian sus
Perro
objetol variables
Programación Orientada a Objetos
Referencia null
Una referencia a un objeto puede no tener asignada una instancia. Esto
puede ocurrir porque se ha declarado el objeto pero no se ha instanciado.
Es decir, no se ha creado el objeto con el operador new
Perro miPerro ; miPerro •
null
Apunta a referencia
Stack NULL
Programación Orientada a Objetos
Referencias Compartidas
Un objeto puede tener varias referencias o alias.
Un alias es una referencia más al mismo espacio de memoria del objeto original.
Es decir:
Persona persona1 ;
persona1 = new Persona("Ana María", 25);
Persona persona2 ;
persona2 = persona1
Significa que perona2 se convierte en el alias de persona 1 y referencia al mismo espacio de
memoria que persona1.
El alias se puede utilizar para mostrar el estado de un objeto como también MODIFICARLO.
Programación Orientada a Objetos
Atributos
Las clases pueden contener atributos que son variables de instancias que
representan las características o propiedades del objeto
Declaración de los Atributos en una Clase
public class Auto {
private String modelo;
private String color;
private double velocidadActual;
private int cantCombustible;
public static final descuento = 200;
// otros atributos y Métodos
}
Programación Orientada a Objetos
Atributos stacticos (static)
Una variable estática está asociada a una clase y no a un objeto. Para acceder a ella,
basta escribir el nombre de la clase seguido de un punto y el nombre de la variable
estática. En este caso NO es necesario crear ningún objeto.
Se declara en el cuerpo de la clase igual que el campo, pero se le antepone la palabra
“static” a la declaración.
Por ejemplo, en la clase Auto, podríamos definir una variable estática totalDeAutos,
para contar cuantos objetos autos tenemos. Para declarar esta variable estática sería:
static int totalDeAutos;
Para usar la variable sería:
Auto.totalDeAutos = 5;
Programación Orientada a Objetos
Métodos
Son las diferentes acciones que puede realizar o ejecutar un objeto.
Los métodos son bloques de código que se utilizan para realizar tareas
específicas. Cada método tiene un nombre que lo identifica y puede recibir una
serie de parámetros, los cuales son variables que proporcionan información
necesaria para que el método realice su tarea
int metodoEntero ( ) { //método sin parámetro
int suma = 5+5;
return suma; //Acá termina la ejecución del método
}
Los métodos pueden ser: con retornos o de consulta (get) , sin retornos o
modificadores(set)y de operaciones.
Programación Orientada a Objetos
Métodos de Consulta o get Métodos
Los métodos de consulta sirven para extraer información de los objetos,
Es necesario pero no obligatorio definir un método ‘get ’ para cada variable del objeto
Un método ‘get ’ se declara public y a continuación se indica el tipo que
devuelve. Recuerda es un método de consulta.
Su lista de parámetros queda vacía.
En el cuerpo del método se utiliza return para devolver el valor correspondiente al atributo del objeto, al que
se hace referencia con this.
Programación Orientada a Objetos
Métodos de consulta especial getAtributo Métodos
Método particular del método get que vurelve los valores concatenados de los atributos del
objeto
Consultar la relación que tiene con el Método toString()
Programación Orientada a Objetos
Métodos Modificadores o set Métodos
Los métodos set o modificadores sirven para modificar el valor de los atributos del objeto,
Los métodos ‘set ’ solo se definen para los atributos que pueden ser modificados después de que se ha
creado el objeto.
Un método ‘set ’ se declara public y devuelve void.
Su lista de parámetros incluye el tipo y el valor a modificar, es un método modificador
El cuerpo de un método ‘set ’ asigna al atributo del objeto el parámetro de la declaración.
Programación Orientada a Objetos
Métodos de Operación Métodos
Un método de tipo operación es aquel que realiza un cálculo o modifica el estado de un objeto.
Este tipo de métodos pueden incluir una lista de parámetros y puede devolver un valor o no.
Si el método no devuelve un valor , se declara void.
Ejemplos:
A) C)
public static String obtenerNombre (){
Scanner lee = new Scanner(System.in) ;
System.out.println(“Ingrese su Nombre: ”);
String nomb = lee. netLine();
lee.close();
Return nomb;
B) }
:
public void duplicar(int num){
invocacion :
num = num *2;
System.out.println(“numero duplicado”+ num);
String nombU = obtenerNombre();
}
System.out.println(“Hola ” +nombU);
Invocacion--> duplicar(num);
Programación Orientada a Objetos
Constructores
Un constructor es un método especial que se llama automáticamente cuando se
crea una instancia u objeto de una clase.
• Los constructores son fundamentales para inicializar o instanciar un objeto de forma
apropiada.
• Pueden recibir parámetros que permiten pasar valores iniciales al objeto durante su
creación.
• Los constructores tienen el mismo nombre que la clase y no tienen tipo de retorno.
• This.atributo : se usa para diferenciar los atributos el objeto y los parámetros del método
constructor. Elimina ambigüedad.
Los constructores pueden ser con parámetros , por defecto (default) ó de tipo copia
Programación Orientada a Objetos
Constructor con parámetros. Constructores
public class Persona {
private String nombre;
parámetro del constructor
private int edad;
// Constructor con parámetros
public Persona(String nombre, int edad) {
this.nombre = nombre;
this.edad = edad;
}
} Atributo del objeto
• En este ejemplo, la clase Persona tiene un constructor que acepta dos parámetros: nombre
y edad y utiliza la palabra clave «this» seguido de un « . » para referirse a los campos
nombre y edad de la clase. Estos parámetros se utilizan para inicializar los atributos nombre
y edad de la instancia de la clase.
Puedes crear objetos de la clase Persona usando este constructor de la
siguiente manera:
Persona persona1 = new Persona("Ana María", 25);
public class Persona { private String nombre; private int edad; // Constructor copia public Persona(Persona otraPersona
Programación Orientada a Objetos
Constructor por defecto y Copia. Constructores
• El constructor por defecto lo proporciona automáticamente java al crear la clase, no toma
parámetros y su cuerpo es vacío.
public Persona(){
}
• El constructor Copia toma un objeto del mismo tipo como parámetro y crea un objeto nuevo
con los mismo valores del atributo que el objeto pasa como argumento.
Programación Orientada a Objetos
Entrada y Salida de Datos
• Lectura de entrada por teclado usando la clase Scanner
La clase Scanner de la librería java.util es muy sencilla para obtener datos de entrada del
usuario, a diferencia de BufferedReader, Scanner si posee un método para la lectura de números
y para la lectura de texto que nos ayudarán a facilitar un poco las cosas, veamos:
Scanner sc = new Scanner(System.in);
import java.util.Scanner;
public class EntradaDeDatos {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //Se crea el objeto lector
System.out.println("Por favor ingrese su nombre"); //Se pide un dato al usuario
String nombre = sc.nextLine(); //Se lee el nombre con nextLine() que retorna un String con el dato
System.out.println("Bienvenido " + nombre + ". Por favor ingrese su edad"); //Se pide otro dato al usuario
int edad = sc.nextInt(); //Se guarda la edad directamente con nextInt()
//Nótese que ya no hubo necesidad de usar parseInt() pues nextInt nos retorna un entero directamente
System.out.println("Gracias " + nombre + " en 10 años usted tendrá " + (edad + 10) + " años."); //Operación numérica con la edad
}
}
Programación Orientada a Objetos
Entrada y Salida de Datos
• Salida de Datos
Para mostrar texto por pantalla en Java no es necesario hacer uso de librerías importadas ni
similares, pues éstas y están incluidas en la librería java.lang que siempre es importada por
defecto.
Para imprimir por pantalla, se usa la clase System, el atributo out, y su método println() o
print() así:
System.out.print (“Hola" ); System.out.println (“Hola");
Nótese que System es una clase y siempre debe ir con la "S" mayúscula.
public class Salida{
public static void main(String[] args) {
System.out.println("Hola usuario bienvenido");
System.out.println("A continuación se muestra una cuenta regresiva");
for (int i = 10; i >= 1; i--) {
System.out.println(i);//Se muestra cada valor de i (de 10 al 1)
}
System.out.println("Ahora, otra cuenta regresiva");
for (int i = 10; i >= 1; i--) {
System.out.print(i);//Se muestra cada valor de i (de 1 a 10)
}
}
}
Programación Orientada a Objetos
Condicionales y Bucles en Java
Los condicionales permiten establecer una serie de reglas al interior de nuestro programa, que
nos ayudan a determinar qué acciones llevar a cabo dadas ciertas circunstancias
Existen diferentes tipos de condicionales, cada uno tiene una utilidad y funcionalidad diferente:
• Condicional If
• Condicional if-else
• Condicional Switch
Los ciclos o también conocidos como bucles, son estructuras de control de total importancia para
el proceso de creación de un programa. Un ciclo nos ayuda a llevar a cabo una tarea repetitiva
en una cantidad de líneas muy pequeña y de forma prácticamente automática.
Existen diferentes tipos de ciclos o bucles en Java, cada uno tiene una utilidad para casos
específicos y depende de nuestra habilidad y conocimientos poder determinar en qué momento
es bueno usar alguno de ellos:
• Ciclo for
• Ciclo while En este apartado el alumno deberá investigar el
• Ciclo do-while funcionamiento de cada condicional y bucles o ciclos.