0% encontró este documento útil (0 votos)
17 vistas36 páginas

Clase 5 - Introducción A La Programación OO en Java

Este documento introduce conceptos básicos de programación orientada a objetos en Java, incluyendo definiciones de clases, objetos, atributos, métodos, constructores y visibilidad. También presenta la estructura básica de programas en Java y cómo se implementan estos conceptos.

Cargado por

dilukka
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas36 páginas

Clase 5 - Introducción A La Programación OO en Java

Este documento introduce conceptos básicos de programación orientada a objetos en Java, incluyendo definiciones de clases, objetos, atributos, métodos, constructores y visibilidad. También presenta la estructura básica de programas en Java y cómo se implementan estos conceptos.

Cargado por

dilukka
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 PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 36

Introducción a la programación

OO en Java
“Desarrollador Java Inicial”
Agenda

➢ Concepto básico y definición


➢ Implementación en Java
➢ Ejercicios
➢ Presentación Trabajo Práctico Integrador
Concepto
básico y
definición
Programación Orientada a Objetos

➢ Los programas se organizan como colecciones de objetos que colaboran entre sí


enviándose mensajes.
➢ Cada objeto tiene un rol específico en el programa y todos pueden comunicarse
entre sí de formas predefinidas.

➢ Un OBJETO es una entidad de la vida real que


posee características (atributos) y
comportamientos (métodos).
Clases y Objetos - De tipos simples a conceptos
complejos
Hasta ahora trabajamos con conceptos simples como un número, una letra, un texto o vectores de los
mismos, pero ¿qué pasa si queremos representar cosas más complejas?

- una persona
- un producto
- un carrito de compras
- un torneo

También, relaciones entre las mismas, por ejemplo que una persona tiene un carrito de compras y el
carrito de compras tiene productos.
Clases y Objetos - Definición
Para representar conceptos más complejos utilizaremos clases y objetos:
CLASE:
➢ Es un molde o plantilla que define las características o atributos
(variables) y comportamientos o métodos (funciones) comunes
de un conjunto de objetos relacionados.
➢ Describe cómo deben ser los objetos que se crean a partir de ella.

OBJETO:
➢ Es una instancia o ejemplar de una clase.
➢ Es una entidad concreta que se crea a partir de una clase y
tiene sus propios atributos y comportamientos.
➢ Posee las características generales de la misma, pero con
valores concretos.
➢ Es una variable compuesta por variables y funciones, definida
por el usuario.
Clases y Objetos - Representación
Clases y Objetos - Relaciones

Persona tiene un
Carrito de compras y
el Carrito de compras
tiene Productos
Estructuras de los programas Java

➢ Los programas de java están basados en clases.


➢ Cada clase se graba en un archivo con extensión
java.
➢ Un programa puede estar formado por muchas
clases, y una sola de ellas debe llevar la función
main( ) que es el punto de entrada al programa.
➢ Paquetes (Packages):
○ Permiten agrupar clases
○ Se encuentran físicamente en carpetas
○ Puede tener un nombre o no, si no lo tiene java,
asume como del mismo paquete a las clases que
están en la misma carpeta
➢ Proyecto: Está formado por un conjunto de clases
y paquetes, tienen un solo punto de entrada, la
función main, en alguna clase del proyecto.
Implementación
en Java
Clases y Objetos - Java
El paquete de una clase se declara en la primer línea y permite que existan
package ar.edu.utn;
varias clases con el mismo nombre
import java.time.LocalDate; Los import permiten utilizar clases de otros paquetes más convenientemente

public class Producto { Nombre de la clase

private String nombre;


private String descripcion;
private LocalDate fechaAlta; Atributos, todos los objetos de una misma clase tienen los mismos atributos, pero con
private Integer pesoKg; distintos valores
private Double precio;

private static final Double minPrecio = 0.1; Atributos de clase o estáticos, su valor es compartido por todos los
objetos de la clase
public Producto(String nombre) {
this.nombre = nombre; Constructor, se utiliza para crear objetos de la clase en cuestión. En
this.fechaAlta = LocalDate.now(); este caso si queremos crear un nuevo producto la sintaxis es:
this.precio = minPrecio; Producto prod = new Producto("Atún");
}

public String getNombre() { Métodos de instancia, funciones que se ejecutan en el contexto del
return this.nombre; objeto. Con la palabra clave “this” se accede al estado (valores de los
} atributos) de un objeto en particular. Por ejemplo, el método
public String getDescripcion() { prod1.getNombre( ) y prod2.getNombre( ) retornan el valor
return this.descripcion; correspondiente a su instancia.
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
}
Clase
➢ Comportamiento y atributos (no valores) compartidos por un conjunto de objetos. Los atributos son
de una clase o tipo primitivo determinado

➢ Elementos de Instancia:
○ Variables: tienen un valor distinto por Objeto
○ Métodos: código a ejecutar, tiene acceso a variables de instancia

➢ Elementos de Clase o Estáticos (static)


○ Variables: compartida por todos las instancias de una clase
○ Constantes: Variable de clase que no se puede cambiar en tiempo de ejecución, hay que recompilar.
○ Métodos: código a ejecutar, no está asociado con una instancia en particular
○ Por ejemplo:

■ LocalTime.now()
■ Integer.parseInt("1234")
■ Math.abs(-37)
Clase - Clasificaciones simples
➢ Datos: Llevan la especificación de una entidad única, por ejemplo Persona, Producto, Máquina, etc.
No deberían tener interface de usuario.
➢ Contenedoras: Poseen colecciones de elementos o de objetos, ej. Lista de Alumnos. No deberían
tener interface de usuario.
➢ Vista: Administran la interface de usuario, permiten al usuario el ingreso de datos y la visualización
de la salida.
Clase - Visibilidad / Alcance
● Público (public): atributos o métodos pueden ser
utilizados por instancias de cualquier clase.

● Privado (static): atributos o métodos pueden ser


utilizados sólo por instancias de la misma clase.

● Paquete (friendly): atributos o métodos pueden ser


utilizados sólo por instancias de clases que están en el
mismo paquete. (propio de Java)

● Protected: atributos o métodos pueden ser utilizados


sólo por instancias de la misma clase o sus subclases.

private String nombre;


public String getNombre() Los atributos son
siempre privados y los
métodos asociados a
los mismos siempres
Alcance o scope son públicos
Clase - Métodos
➢ Métodos de interface:
○ Entrada al objeto: Reciben lo posibles cambios que se originan del exterior del objeto, como por ejemplo
cambiar algún atributo. Forma set+Nombre del atributo, por ejemplo para cambiar el valor del atributo nombre
podemos escribir setNombre( ).
○ Salida del objeto: Las respuestas propias del objeto, como por ejemplo retornar el valor de algún atributo.
forma get+Nombre del atributo, por ejemplo para retornar el valor del atributo nombre podemos escribir
getNombre( ).
➢ Métodos de control o negocio:
○ No requieren interface de entrada/salida, por ejemplo la actualización de algún cálculo. Se puede usar cualquier
nombre acorde a la misión del método.

Cuenta bancaria
➢ Atributos : Numero, Titular, Saldo
➢ Métodos : Inicializar atributos, cambiar
Numero, cambiar Titular, cambiar Saldo,
retornar numero, retornar titular, retornar
saldo, depositar, extraer, y retornar una cadena
con todos los atributos
Clase - Constructores
➢ Permiten inicializar los atributos de los objetos.
➢ Tienen el mismo nombre de la clase que inicializa.
➢ No devuelven valores.
➢ Pueden admitir parámetros.
➢ Pueden existir más de un constructor, e incluso no existir.
➢ Si no se define ningún constructor de una clase, el compilador generará un constructor por defecto.
➢ Se llaman en el momento de la creación del objeto, cuando se usa la palabra reservada new.

//por defecto // con argumentos externos


public Alumno() { public Alumno (int legajo, String nombre, float nota1, float
this.legajo = 0; nota2) {
this.nombre = " "; this.legajo = legajo; Referencia al objeto
this.nota1 = 0f; this.nombre = nombre; asociado en la
invocación. Se utilizan
this.nota2 = 0f; this.nota1 = nota1;
para resolver el conflicto
} this.nota2 = nota2; de nombres.
}
Objetos
➢ Un objeto es una instancia de una determinada Clase
➢ Todo objeto se crea a través de un constructor. Con Java, el mismo se llama utilizando la palabra reservada new. Si no
se declara ninguno, por defecto tienen un constructor vacío. Si se declara uno con parámetros, el constructor vacío
debe declararse explícitamente.

public class Producto {


public Producto(String nombre) {
this.nombre = nombre;
}
. . .
}
Producto prod = new Producto( "Atún");

➢ Para utilizar un método de un objeto, decimos que al mismo se le envía un “mensaje”. Para representar esto, se pone
un punto “.” luego de una variable referenciando un objeto:
objetoX.metodo(param1,param2,...)

// desde una clase Curso que tiene un alumno


leg = alumno.getLegajo();
Objetos
Objetos - Resumen

➢ Declaración : nombreClase nombreObjeto;


Alumno a;

➢ Creación: nombreObjeto = new nombreClase();

a = new Alumno(); //objeto o instancia de la clase

➢ Invocación de miembros: nombreObjeto.miembro;

a.setNombre(“Juan”);
System.out.print(“Los datos del alumno: “+ a.toString());

➢ Eliminación: La realiza el Garbage Collector que es un servicio de Java que se encarga de


eliminar la memoria que no se está referenciando, un objeto deja de referenciarse cuando sale
fuera de su ámbito.
Wrappers
● Todo tipo primitivo tiene su Wrapper

Integer unNumero = 1;
Double otroNumero = 1.0;
Character unCaracter = 'X';
Boolean unBooleano = true;

● Esto nos permite utilizar métodos sobre dichos tipos, por ejemplo:

int unNumero2 = 1;
unNumero = unNumero + unNumero2; //compatible
otroNumero.equals(unNumero) // false
unBooleano.toString(); // "true"

● Y también nos provee de varios métodos útiles

Integer.parseInt("123"); // entero 123


Integer.toHexString(13); // "b5" string de número en hexadecimal
Ejercicios
EJERCICIOS
1. Crear la clase Alumno que posea la estructura graficada, luego crear algunos objetos
para probarla.
Pasos para crear la clase:
1. Crear un nuevo archivo Java class, con el
nombre de la clase Alumno.
2. Escribir los atributos.
3. Escribir los métodos generales:
constructores, setters (entrada), getters
(salida), toString (String con todos los datos
que tendrán los objetos).
4. Escribir los métodos específicos:
getPromedio( ).
EJERCICIOS

Atajos para crear los métodos generales:


EJERCICIOS

1. Clase Alumno
EJERCICIOS

1. Clase Alumno
EJERCICIOS

1. Uso de Objetos de tipo Alumno

Tarea opcional: crear varios Objetos de tipo Alumno, cargarle los datos desde teclado,
guardarlos en un vector.
EJERCICIOS
2. Usando el ejercicio 4 de la clase anterior, plantear los postulantes en una clase propia.
Se tienen los datos de tres postulantes a un empleo, a los que se les realizó un test para conocer el
nivel de formación previa de cada uno. Por cada postulante, se tienen los siguientes datos: nombre
del postulante, cantidad total de preguntas que se le realizaron y cantidad de preguntas que
contestó correctamente. Se pide confeccionar un programa que lea los datos de los tres postulantes,
informe el nivel de formación previa de cada uno según los criterios de aprobación que se indican
más abajo, e indique finalmente el nombre del postulante que ganó el puesto. Los criterios de
aprobación son en función del porcentaje de respuestas correctas sobre el total de preguntas
realizadas a cada postulante:
Nivel Superior: Porcentaje >= 90%
Nivel Medio: 75% <= Porcentaje < 90%
Nivel Regular: 50% <= Porcentaje < 75%
Fuera de Nivel: Porcentaje < 50%
Aclaración: Si ningún postulante superó el 50% se considera que ninguno ganó el puesto.
EJERCICIOS
Análisis y solución:
EJERCICIOS
Análisis y solución:
Presentación
Trabajo Práctico
Integrador
TP INTEGRADOR
Consigna
La propuesta del trabajo práctico consiste en implementar un programa de consola que dada la información de resultados de partidos e
información de pronósticos, ordene por puntaje obtenido a los participantes.

Enunciado
Se encuentra publicado en el campus como Enunciado TP Integrador - desarrollador Java Inicial - Entrega 1.

Metodología
Luego de la presentación, se proponen entregas incrementales a lo largo del curso. El calendario definitivo será definido por cada
docente.
El trabajo práctico intregador es obligatorio y se realizará en grupos de 5 integrantes. Los estudiantes deberán anotarse en los grupos
que se publiquen en el campus.
TP INTEGRADOR
Calendario tentativo:

Hito Nro. de Clase

Presentación TP 5

Entrega 1 7

Entrega 2 9

Entrega 3 12

Entrega 4 16

Presentación Final 18
TP INTEGRADOR

Pronósticos Deportivos

Introducción
Nos han solicitado el desarrollo de un programa de Pronósticos Deportivos.
Un pronóstico deportivo consta de un posible resultado de un partido (que un equipo gane (G), pierda (P) o empate
(E)), propuesto por una persona que está participando de una competencia contra otras.
Cada partido tendrá un resultado. Este resultado se utilizará para otorgar puntos a los participantes de la
competencia según el acierto de sus pronósticos.
Finalmente, quien gane la competencia será aquella persona que sume mayor cantidad de puntos.
TP INTEGRADOR
Diagrama de Clases:
TP INTEGRADOR

Entrega 1
A partir del diagrama de clases propuesto, crear en java todas las clases del modelo, sus atributos, y
métodos generales: constructores, setters (entrada), getters (salida), toString (String con todos los
datos que tendrán los objetos).

Sugerencias

1. Crear la clase Equipo, Partido y Pronostico.


2. Crear la clase Ronda y Participante.
3. Crear un programa que pruebe todas las clases, cargando o asignando datos para cada clase y
mostrando sus datos por consola (no obligatorio).
Gracias!

También podría gustarte