Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 29

Algoritmos y Estructuras de

Datos
Cursada 2018

Prof. Alejandra Schiavoni ([email protected])


Prof. Catalina Mostaccio ([email protected])
Prof. Laura Fava ([email protected])
Prof. Pablo Iuliano ([email protected])

Algoritmos y Estructuras de Datos 2021


Java
El Lenguaje y la Plataforma

Java abarca dos aspectos:


• Un Lenguaje de Programación
• Orientado a objetos
• Independiente de la plataforma
• simple, seguro, distribuido, . . .
• Una Plataforma

Algoritmos y Estructuras de Datos 2021


La Plataforma Java
Introducción
Los procesadores (CPU) requieren un sistema operativo (SO), tal como Linux, Windows o
Solaris para ejecutar programas, grabar archivos, leer de dispositivos, imprimir, etc. La
combinación de procesador y sistema operativo se llama plataforma de ejecución.
▪ Los programas se escriben en lenguajes de ▪ El lenguaje de máquina o código binario
programación de alto nivel, como Java, C++ o consiste de instrucciones muy simples que la
Pascal. Un programa escrito en un lenguaje de alto CPU de la computadora ejecuta directamente.
nivel, no puede ejecutarse directamente en la Cada tipo de procesador tiene su propio
computadora, necesita ser traducido a lenguaje de lenguaje de máquina. Cada código binario es
máquina. Esta traducción puede realizarla un específico para cada plataforma.
programa llamado compilador.
binario p/
1101010 Linux/Intel
Compilador C++
para Linux/Intel

binario p/
Código 0101010 Window/Intel
Fuente Compilador C++
C++ para Windows/Intel

binario p/
00101010 Solaris/Sparc
Compilador C++
para Solaris/Sparc

Algoritmos y Estructuras de Datos 2021


La Plataforma Java
Introducción
Una alternativa al compilador es un intérprete. Un intérprete es un programa que
traduce y ejecuta un programa escrito en un lenguaje de alto nivel, instrucción por
instrucción en el momento que se ejecuta (a diferencia del compilador que traduce
el programa como un todo y genera un ejecutable).

Los programas escritos en Java se compilan e interpretan:


− un programa escrito en Java se compila a un lenguaje de máquina de una
computadora virtual, llamada Máquina Virtual Java (MVJ ó JVM). La MVJ
es software. El lenguaje de máquina de la MVJ se llama código de bytes
Java (en inglés java bytecodes).
− el programa Java compilado, luego es interpretado.

Un programa Java compilado, puede ejecutarse sobre cualquier plataforma que


disponga de una MVJ. El intérprete ejecuta el código de bytes Java.

Algoritmos y Estructuras de Datos 2021


La Plataforma Java
Introducción
En java, el código fuente es escrito en archivos con texto plano con extensión .java.
Esos archivos son posteriormente compilados en archivos con extensión .class por
el compilador java (javac.exe).
Un archivo con extensión .class no contiene código nativo/específico para un
procesador determinado, sino que contiene bytecodes (el lenguaje de la máquina
virtual de java).

Compilador

Programa.java Programa.class
Programa

El java.exe es un programa que viene con la plataforma java, que permite ejecutar
los bytecodes, es el intérprete java.

Algoritmos y Estructuras de Datos 2021


La Plataforma Java
Introducción
Existen diferentes Máquinas Virtuales Java para los diferentes sistemas
operativos. Los mismos archivos .class pueden ejecutar en los distintos
sistemas operativos, como Microsoft Windows, Solaris, Linux o Mac, sin ninguna
compilación previa.
class HolaMundo { HolaMundo.java
public static void main(String[] args){
System.out.println(“Hola !!!”);
}
}

HolaMundo.java
Usando la JVM, la misma aplicación es capaz de
HolaMundo.class ejecutar sobre las distintas plataformas => el
código de bytes (.class) es independiente de la
plataforma.

Linux Windows Solaris

Algoritmos y Estructuras de Datos 2021


La Plataforma Java
• La plataforma java aisla al programa Java del Sistema Operativo (SO) y del
hardware sobre el que se está ejecutando.
• Provee “independencia” de la plataforma.
• La MVJ es una máquina de software que emula una máquina real. Es el
corazón de la plataforma Java.
El código Java compilado tiene
Programa java
instrucciones específicas para la MVJ
API La Plataforma
MVJ
Java
Plataforma (SO+Hard)

• La especificación de la MVJ es única. La especificación de la MVJ permite que el


software Java sea “independiente de la plataforma” ya que se compila para una
máquina genérica o MVJ.
• La especificación de la MVJ provee un estándar. Cada SO tiene su propia
implementación de la MVJ.
Algoritmos y Estructuras de Datos 2021
Ediciones de Java
J2EE J2SE J2ME
Soluciones Soluciones Desktop Soluciones para el
Empresariales ▪ Aplicaciones Consumidor
▪ eCommerce ▪ Applets ▪ Celulares, PDAs, TV
▪ eBusiness ▪ navegación wireless

▪ JSE (Java Standard Edition): está diseñada para programar y ejecutar applets y
aplicaciones de escritorio JAVA. Típicamente son programas que se ejecutan en una
PC. Es el fundamento de las 2 restantes ediciones. Está compuesta por el JRE y el
JDK.
▪ JEE (Java Entreprise Edition): está diseñada para programar y ejecutar aplicaciones
empresariales, caracterizadas por ser multiusuario y distribuidas. El procesamiento de
estas aplicaciones se realiza en un servidor. Usualmente son aplicaciones web.
▪ JME (Java Micro Edition): está diseñada para programar y ejecutar aplicaciones para
dispositivos con recursos de cómputo limitados, como los dispositivos móviles. Estos
dispositivos cuentan con poca memoria RAM, pantallas muy chicas y muchas veces
conexiones de red intermitentes.
Algoritmos y Estructuras de Datos 2021
¿Dónde encuentro las Ediciones de Java para descargar?
http://www.oracle.com/technetwork/java/javase/downloads/index.html

JSE 8 (Update 121


Para desarrllar,
compilar y ejecutar
Algoritmos y Estructuras de Datos 2021
La Plataforma Estándar de Java
Java SE
Java provee una plataforma de software para desarrollar programas y otra para
ejecutarlos.
• Plataforma de Desarrollo
El Java Development Kit (JDK) es la plataforma básica para desarrollo de
programas Java. Actualmente, el nombre oficial es Java SE o JSE (Java
Standard Edition).
Incluye herramientas tales como un compilador, un intérprete, un depurador, un
documentador, un empaquetador de clases, etc. Estas herramientas se usan
desde la línea de comando.
• Plataforma de Ejecución
La plataforma de ejecución de Java se llama JRE (Java Runtime Environment)
y provee todas las componentes necesarias para ejecutar programas escritos
para JSE (programas de escritorio o applets). La MVJ es parte del JRE.
Los programas Java se ejecutan sobre la máquina de software llamada MVJ.

Algoritmos y Estructuras de Datos 2021


Java SE o JDK
La plataforma provee un conjunto de herramientas para desarrollar y ejecutar
programas Java. La estructura de directorios del J2SE es la siguiente:

JDK#.#
Plataforma de
ejecución (JRE)

bin lib jre


java.exe tools.jar
javac.exe dt.jar bin lib
javadoc.exe . . .
java.exe rt.ja
jar.exe . . .
ext r
appletViewer.exe classes
. . .
Se ejecutan desde la línea de comandos o
indirectamente, usando algún entorno de librerías del clases del programador
desarrollo (IDE). programador (*.jar) (*.class)

Algoritmos y Estructuras de Datos 2021


¿Qué más necesito?
Se puede trabajar con un editor de texto o con un entorno de desarrollo como ECLIPSE, que puede
descargarse desde
http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/mars2

Algoritmos y Estructuras de Datos 2021


¿Cómo hacer y ejecutar el primer programa
usando JAVA? (SIN IDE)
Un archivo fuente java, es un archivo de texto, que debe guardarse con el mismo
nombre que la clase (y con extensión .java). Se deben respetar las mayúsculas. Para
crear un programa en java, debemos crear una clase.

¿Cómo se compila el
archivo fuente
java?

¿Cómo se ejecuta?
¿Cómo pasar parámetros a un programa
usando JAVA? (SIN IDE)
A un programa JAVA se le pueden pasar parámetros a través de la línea de
comandos.

Se pasan parámetros
separados por blancos

¿Cómo hacemos para tomar desde el programa los parámetros de la línea de


comandos?

1er parámetro 2do parámetro


¿Cómo hacer y ejecutar el primer
programa usando Eclipse?
Salva y compila Ejecuta (run)
Nombre de la clase
¿Cómo pasamos parámetros a un
programa desde Eclipse?

Se escriben los parámetros


separados por blancos o uno
debajo de otro

Run Configuration
(desde la barra de
opciones o desde el
menú contextual)
Programación Orientada a Objetos
WhatsApp es una aplicación que permite el
intercambio de mensajes de texto, íconos,
fotos, vídeos y mensajes de voz a través de
internet.

Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano


Programación Orientada a Objetos
¿Qué datos y funcionalidades maneja una aplicación de estas características?

Algunos datos . . . Algunas funcionalidades . . .


- Necesitamos disponer de contactos y de - Crear/Editar/Borrar/Bloquear Contacto
grupos de contactos. - Enviar mensaje
- Mensajes (texto, imagen/foto, video) - Armar/Editar/Borrar grupo
- Salir de un grupo
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
Programación Orientada a Objetos
¿Qué tipos de objetos manipulamos? Grupo

Contacto nombre
imagen
nombre participantes
imagen (conjunto de
numero Contacto)
estado Mensaje
contactos (conjunto enviar mensaje
de Contacto o agregarParticipante
Grupo) ...
origen, destino
Contenido (texto,
imagen, sonido, video)
editar contacto fechaHora salida
enviar mensaje mostrar
fechaHora recibido ...
bloquear, vaciar fechaHora leido
...

Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano


Programación Orientada a Objetos
Fundamentos
El proceso de abstracción
Las aplicaciones de software típicas, modelan el mundo real. El mundo real es complejo a
simple vista y, cuando se lo observa con más detalle, el nivel de complejidad crece.
¿cómo modelamos este mundo tan complejo?
Los humanos entendemos al mundo, construyendo modelos mentales de partes del mismo.
Un modelo mental es una visión simplificada de cómo las cosas funcionan y cómo
podemos interactuar con ellas.
La abstracción es uno de los mecanismos que los humanos utilizamos para combatir la
complejidad. La orientación a objetos, maneja la complejidad de los problemas del mundo
real, abstrayendo su conocimiento y encapsulándolo en objetos => es clave en el desarrollo
de software.

¿Cuál es el objetivo buscado por la programación orientada a objetos?


Organizar los datos del programa y el procesamiento asociado a ellos, en entidades
coherentes, llamadas objetos. Cada objeto abstrae un dato del programa y lo que puede
hacerse sobre él.

Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano


Programación Orientada a Objetos
Fundamentos
agentes u objetos
Encontramos que algunos objetos como mensajes, contactos, grupos, etc. son necesarios
para implementar esta aplicación.

1º principio de programación orientado a objetos

Un programa orientado a objetos, está organizado como una comunidad de agentes


interactuando, llamados objetos. Cada objeto cumple un rol. Cada objeto provee un
servicio o ejecuta una acción, que es usada por otros miembros de la comunidad.

Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano


Programación Orientada a Objetos
Fundamentos
Ocultamiento de información
Un objeto es una entidad que contiene información y operaciones relacionadas, que tiene
sentido agrupar (empaquetar). Este concepto, en el contexto de POO es conocido como
encapsulamiento.
e
enviar
Mensaj Comúnmente los objetos son como cápsulas
opacas, con una interfaz pública y una

ag
re
rupo

ga
representación privada. Este concepto se conoce

r Co
nombre=Lucía
armarG

como ocultamiento de información (information


nta
imagen=

ct
hiding). Permite eliminar de la vista cierta
o
estado=activo
. . .
. .

m br
e información propia del objeto, logrando mayor nivel
No
.

set de abstracción y facilitando los cambios del código.


getNombr
e

2º principio de programación orientado a objetos


El encapsulamiento y el ocultamiento de información se complementan, para aislar las
diferentes partes de un sistema, permitiendo que el código sea modificado, extendido y que
se puedan corregir errores, sin el riesgo de producir efectos colaterales no intencionados.
Los objetos ponen en práctica estos dos conceptos:
1. Se abstrae la funcionalidad y la información relacionada y se encapsulan en un objeto.
2. Se decide que funcionalidad e información, podrá ser requerida por otros objetos y el resto se oculta.
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
Programación Orientada a Objetos
Fundamentos
mensajes y métodos
En general a través de la Interfaz de Usuario Gráfica se generan eventos que envían
mensajes a ciertos objetos, los cuales a su vez envian mensajes a otros objetos, hasta que
comunitariamente completan la tarea.
mensaje (argumentos)
grupo.agregarParticipante(unContacto)

emisor receptor

3º principio de programación orientado a objetos

Una acción es iniciada cuando un objeto, el emisor, envía un mensaje a un agente


responsable de la acción, el receptor. El mensaje representa el requerimiento y es
acompañado por información adicional (argumentos) necesaria para cumplir el
requerimiento. El receptor en respuesta al mensaje ejecutará un conjunto de acciones o
método para satisfacer el requerimiento.

Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano


Programación Orientada a Objetos
Fundamentos
mensajes y métodos vs. llamadas a procedimiento
Existen 2 distinciones importantes:
- Cuando se envía un mensaje, siempre hay un receptor para aquel mensaje; el
receptor es algún objeto, al cual se le envía un mensaje. Cuando se llama a un
procedimiento, NO hay receptor.
grupo.agregarParticipante(unContacto)

- La interpretación del mensaje (el método usado para responder al mensaje) es


determinado por el receptor y podría variar para diferentes receptores
(polimorfismo).
?
grupo.agregarParticipante(Contacto c) contacto.agregarParticipante(Contacto c)

emisor receptor emisor receptor

Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano


Programación Orientada a Objetos
Fundamentos
Clases e instancias
Una clase es un molde a partir de la cual se crean instancias con las mismas
características y comportamiento.

e
Clase e
Instancia de
ensaj Mensaj
enviarM Contacto enviar Contacto ->
ag

ag
Objeto
re

re
rupo

rupo
ga

ga
rC

rC
nombre
nombre
on
nombre=Lucía

on
armarG

armarG
ta

ta
imagen
imagen imagen=
ct

ct
estado estado=feliz
o

o
estado
.. .. .. . . .
. .

. .
b re br
e
om o m
tN tN
.

.
se s e
getNombr getNombr
e e

4º principio de programación orientado a objetos


Todos los objetos son instancias de una clase. El método invocado por un objeto en
respuesta a un mensaje es determinado por la clase del objeto receptor.

Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano


Programación Orientada a Objetos
Fundamentos
Clases e instancias
Un objeto o instancia es una entidad de software que combina un estado/datos y
comportamiento/métodos.
e
Clas o o nt acto
act de C o
Cont anc i a
jet
rMensaje Inst -> Ob rMens
aje
envia envia
ag

ag
re Todos los objeto de tipo

re
upo

upo
ga

ga
rC Contacto tendrán un

rC
armarGr

armarGr
nombre nombre=Lucía nombre, una imagen, un
on

on
nombre
ta

ta
imagen imagen= estado, etc. pero cada
ct

ct
imagen
estado estado=feliz uno tendrá un valor
o

o
.estado
. . . . . particular en esos
. .

. .
re re
.

.
. . . om
b b atributos.
om
tN tN
getNombr se getNombr se
e e

• El estado de un objeto es todo lo que el objeto conoce de sí mismo y, el


comportamiento es todo lo que el objeto puede hacer.
• Un objeto mantiene su estado en variables y su comportamiento está implementado
en los métodos de la clase a la que pertenece.
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
Programación Orientada a Objetos
Fundamentos

¿Qué tipos de mensajes tenemos?

Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano


Programación Orientada a Objetos
Fundamentos
¿Qué tipos de mensajes tenemos?
Mensaje

Origen
Destino
fechaHora salida
fechaHora recibido
fechaHora leido

MensajeConTexto

texto
video
audio

MensajeVideo
emoticon
MensajeAudio
imagen

MensajeEmoticon MensajeImagen
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
Programación Orientada a Objetos
Fundamentos
Herencia
Las clases pueden ser organizadas en jerarquías de herencia donde, las clases hijas o subclases,
heredarán estado y comportamiento de las clases que se encuentran más arriba en la jerarquía,
llamadas superclases.
Las subclases pueden agregar nuevas variables y métodos y pueden cambiar el comportamiento de
los métodos heredados.
Mensaje Origen
Destino La programación orientada a objetos
fechaHora salida (POO) permite a las clases expresar
fechaHora recibido similitudes entre objetos que tienen
fechaHora leido
características y comportamiento
MensajeConTexto común. Estas similitudes pueden
texto expresarse usando herencia.
video
audio
MensajeVideo
emoticon MensajeAudio
imagen

MensajeEmoticon MensajeImagen

5º principio de programación orientado a objetos


El conocimiento de una categoría más general, es también aplicable a una categoría mas específica y
se denomina herencia.
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano

También podría gustarte