SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Algoritmos y Estructuras de Datos 2021
Algoritmos y Estructuras de
Datos
Cursada 2018
Prof. Alejandra Schiavoni (ales@info.unlp.edu.ar)
Prof. Catalina Mostaccio (catty@lifia.info.unlp.edu.ar)
Prof. Laura Fava (lfava@info.unlp.edu.ar)
Prof. Pablo Iuliano (piuliano@info.unlp.edu.ar)
Algoritmos y Estructuras de Datos 2021
Java abarca dos aspectos:
•Un Lenguaje de Programación
• Orientado a objetos
• Independiente de la plataforma
• simple, seguro, distribuido, . . .
•Una Plataforma
Java
El Lenguaje y la Plataforma
Algoritmos y Estructuras de Datos 2021
Compilador C++
para Linux/Intel
Compilador C++
para Windows/Intel
Compilador C++
para Solaris/Sparc
Código
Fuente
C++
1101010
0101010
00101010
binario p/
Linux/Intel
binario p/
Window/Intel
binario p/
Solaris/Sparc
▪ Los programas se escriben en lenguajes de
programación de alto nivel, como Java, C++ o
Pascal. Un programa escrito en un lenguaje de alto
nivel, no puede ejecutarse directamente en la
computadora, necesita ser traducido a lenguaje de
máquina. Esta traducción puede realizarla un
programa llamado compilador.
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.
▪ El lenguaje de máquina o código binario
consiste de instrucciones muy simples que la
CPU de la computadora ejecuta directamente.
Cada tipo de procesador tiene su propio
lenguaje de máquina. Cada código binario es
específico para cada plataforma.
La Plataforma Java
Introducción
Algoritmos y Estructuras de Datos 2021
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.
La Plataforma Java
Introducción
Algoritmos y Estructuras de Datos 2021
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).
Programa.java Programa.class
El java.exe es un programa que viene con la plataforma java, que permite ejecutar
los bytecodes, es el intérprete java.
Programa
Compilador
La Plataforma Java
Introducción
Algoritmos y Estructuras de Datos 2021
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 {
public static void main(String[] args){
System.out.println(“Hola !!!”);
}
}
HolaMundo.java
Usando la JVM, la misma aplicación es capaz de
ejecutar sobre las distintas plataformas => el
código de bytes (.class) es independiente de la
plataforma.
HolaMundo.class
Linux Windows Solaris
HolaMundo.java
La Plataforma Java
Introducción
Algoritmos y Estructuras de Datos 2021
• 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
instrucciones específicas para la MVJ
• 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.
La Plataforma
Java
Programa java
MVJ
API
Plataforma (SO+Hard)
La Plataforma Java
Algoritmos y Estructuras de Datos 2021
Ediciones de Java
▪ 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.
J2EE J2SE J2ME
Soluciones
Empresariales
▪ eCommerce
▪ eBusiness
Soluciones Desktop
▪ Aplicaciones
▪ Applets
Soluciones para el
Consumidor
▪ Celulares, PDAs, TV
▪ navegación wireless
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
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.
La Plataforma Estándar de Java
Java SE
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:
java.exe
javac.exe
javadoc.exe
jar.exe
appletViewer.exe
. . .
librerías del
programador (*.jar)
JDK#.#
lib
bin jre
bin lib
ext
rt.ja
r
tools.jar
dt.jar
. . .
java.exe
. . .
classes
clases del programador
(*.class)
Plataforma de
ejecución (JRE)
Se ejecutan desde la línea de comandos o
indirectamente, usando algún entorno de
desarrollo (IDE).
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
¿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?
Nombre de la clase
Salva y compila Ejecuta (run)
¿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)
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
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?
Algunas funcionalidades . . .
- Crear/Editar/Borrar/Bloquear Contacto
- Enviar mensaje
- Armar/Editar/Borrar grupo
- Salir de un grupo
Algunos datos . . .
- Necesitamos disponer de contactos y de
grupos de contactos.
- Mensajes (texto, imagen/foto, video)
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
nombre
imagen
participantes
(conjunto de
Contacto)
origen, destino
Contenido (texto,
imagen, sonido, video)
fechaHora salida
fechaHora recibido
fechaHora leido
Contacto
nombre
imagen
numero
estado
contactos (conjunto
de Contacto o
Grupo)
Grupo
Mensaje
¿Qué tipos de objetos manipulamos?
editar contacto
enviar mensaje
bloquear, vaciar
. . .
enviar mensaje
agregarParticipante
. . .
mostrar
. . .
Programación Orientada a Objetos
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
El proceso de abstracción
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.
¿Cuál es el objetivo buscado por la programación orientada a objetos?
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.
Programación Orientada a Objetos
Fundamentos
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
Programación Orientada a Objetos
Fundamentos
agentes u 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.
1º principio de programación orientado a objetos
Encontramos que algunos objetos como mensajes, contactos, grupos, etc. son necesarios
para implementar esta aplicación.
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
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.
Ocultamiento de información
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.
2º principio de programación orientado a objetos
Programación Orientada a Objetos
Fundamentos
.
.
.
enviarMensaje
a
g
r
e
g
a
r
C
o
n
t
a
c
t
o
a
r
m
a
r
G
r
u
p
o
getNombre
setNombre
nombre=Lucía
imagen=
estado=activo
. . .
Comúnmente los objetos son como cápsulas
opacas, con una interfaz pública y una
representación privada. Este concepto se conoce
como ocultamiento de información (information
hiding). Permite eliminar de la vista cierta
información propia del objeto, logrando mayor nivel
de abstracción y facilitando los cambios del código.
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
mensajes y métodos
grupo.agregarParticipante(unContacto)
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.
3º principio de programación orientado a objetos
receptor
emisor
mensaje (argumentos)
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.
Programación Orientada a Objetos
Fundamentos
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
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.
- 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).
mensajes y métodos vs. llamadas a procedimiento
Programación Orientada a Objetos
Fundamentos
grupo.agregarParticipante(unContacto)
grupo.agregarParticipante(Contacto c)
receptor
emisor receptor
emisor
contacto.agregarParticipante(Contacto c)
?
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
Clases e instancias
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.
4º principio de programación orientado a objetos
Una clase es un molde a partir de la cual se crean instancias con las mismas
características y comportamiento.
Programación Orientada a Objetos
Fundamentos
nombre
imagen
estado
. . .
Clase
Contacto
Instancia de
Contacto ->
Objeto
.
.
.
enviarMensaje
a
g
r
e
g
a
r
C
o
n
t
a
c
t
o
a
r
m
a
r
G
r
u
p
o
getNombre
setNombre
.
.
.
enviarMensaje
a
g
r
e
g
a
r
C
o
n
t
a
c
t
o
a
r
m
a
r
G
r
u
p
o
getNombre
setNombre
nombre=Lucía
imagen=
estado=feliz
. . .
nombre
imagen
estado
. . .
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
Clases e instancias
Un objeto o instancia es una entidad de software que combina un estado/datos y
comportamiento/métodos.
• 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.
Programación Orientada a Objetos
Fundamentos
nombre
imagen
estado
. . .
Clase
Contacto
Instancia de Contacto
-> Objeto
.
.
.
enviarMensaje
a
g
r
e
g
a
r
C
o
n
t
a
c
t
o
a
r
m
a
r
G
r
u
p
o
getNombre
setNombre
nombre
imagen
estado
. . .
.
.
.
enviarMensaje
a
g
r
e
g
a
r
C
o
n
t
a
c
t
o
a
r
m
a
r
G
r
u
p
o
getNombre
setNombre
nombre=Lucía
imagen=
estado=feliz
. . .
Todos los objeto de tipo
Contacto tendrán un
nombre, una imagen, un
estado, etc. pero cada
uno tendrá un valor
particular en esos
atributos.
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
¿Qué tipos de mensajes tenemos?
Programación Orientada a Objetos
Fundamentos
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
¿Qué tipos de mensajes tenemos?
MensajeImagen
Programación Orientada a Objetos
Fundamentos
Origen
Destino
fechaHora salida
fechaHora recibido
fechaHora leido
Mensaje
emoticon
MensajeConTexto
audio
MensajeAudio
imagen
video
MensajeVideo
texto
MensajeEmoticon
Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano
Herencia
El conocimiento de una categoría más general, es también aplicable a una categoría mas específica y
se denomina herencia.
5º principio de programación orientado a objetos
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.
Programación Orientada a Objetos
Fundamentos
La programación orientada a objetos
(POO) permite a las clases expresar
similitudes entre objetos que tienen
características y comportamiento
común. Estas similitudes pueden
expresarse usando herencia.
Origen
Destino
fechaHora salida
fechaHora recibido
fechaHora leido
Mensaje
emoticon
MensajeConTexto
audio
MensajeAudio
imagen
video
MensajeVideo
texto
MensajeEmoticon MensajeImagen

Más contenido relacionado

Similar a Algoritmos y estructuras de datos, presentacion inicial

Presentación1
Presentación1Presentación1
Presentación1
rpcajas62
 
Conceptos de programación orientada a objeto
Conceptos de programación orientada a objetoConceptos de programación orientada a objeto
Conceptos de programación orientada a objeto
JJ
 

Similar a Algoritmos y estructuras de datos, presentacion inicial (20)

Introduccion Java
Introduccion JavaIntroduccion Java
Introduccion Java
 
Programación en Java (I)
Programación en Java (I) Programación en Java (I)
Programación en Java (I)
 
Lenguaje de programacion java
Lenguaje de programacion javaLenguaje de programacion java
Lenguaje de programacion java
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
Presentación1
Presentación1Presentación1
Presentación1
 
Presentación1
Presentación1Presentación1
Presentación1
 
Aprendiendo Java SCF
Aprendiendo Java SCFAprendiendo Java SCF
Aprendiendo Java SCF
 
C1 java introduccion
C1 java introduccionC1 java introduccion
C1 java introduccion
 
C1 java introduccion
C1 java introduccionC1 java introduccion
C1 java introduccion
 
Javajulian
JavajulianJavajulian
Javajulian
 
JAVA
JAVAJAVA
JAVA
 
Guia 1 java
Guia 1 javaGuia 1 java
Guia 1 java
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
Ediciones de java
Ediciones de javaEdiciones de java
Ediciones de java
 
Aplicaciones java
Aplicaciones javaAplicaciones java
Aplicaciones java
 
Guia del trabajo con excepciones
Guia del trabajo con excepcionesGuia del trabajo con excepciones
Guia del trabajo con excepciones
 
Tutorial de eclipse 2
Tutorial de eclipse 2Tutorial de eclipse 2
Tutorial de eclipse 2
 
Módulo 01 Introducción a la Tecnología Java
Módulo 01 Introducción a la Tecnología JavaMódulo 01 Introducción a la Tecnología Java
Módulo 01 Introducción a la Tecnología Java
 
Conceptos de programación orientada a objeto
Conceptos de programación orientada a objetoConceptos de programación orientada a objeto
Conceptos de programación orientada a objeto
 
Java
JavaJava
Java
 

Último

tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa maria
susafy7
 

Último (20)

APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestaciones
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión interna
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
 
libro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacioneslibro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operaciones
 
422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx
 
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
 
Minería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptosMinería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptos
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
 
tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa maria
 
Tabla de referentes empíricos para tesis-1.docx
Tabla de referentes empíricos para tesis-1.docxTabla de referentes empíricos para tesis-1.docx
Tabla de referentes empíricos para tesis-1.docx
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 

Algoritmos y estructuras de datos, presentacion inicial

  • 1. Algoritmos y Estructuras de Datos 2021 Algoritmos y Estructuras de Datos Cursada 2018 Prof. Alejandra Schiavoni (ales@info.unlp.edu.ar) Prof. Catalina Mostaccio (catty@lifia.info.unlp.edu.ar) Prof. Laura Fava (lfava@info.unlp.edu.ar) Prof. Pablo Iuliano (piuliano@info.unlp.edu.ar)
  • 2. Algoritmos y Estructuras de Datos 2021 Java abarca dos aspectos: •Un Lenguaje de Programación • Orientado a objetos • Independiente de la plataforma • simple, seguro, distribuido, . . . •Una Plataforma Java El Lenguaje y la Plataforma
  • 3. Algoritmos y Estructuras de Datos 2021 Compilador C++ para Linux/Intel Compilador C++ para Windows/Intel Compilador C++ para Solaris/Sparc Código Fuente C++ 1101010 0101010 00101010 binario p/ Linux/Intel binario p/ Window/Intel binario p/ Solaris/Sparc ▪ Los programas se escriben en lenguajes de programación de alto nivel, como Java, C++ o Pascal. Un programa escrito en un lenguaje de alto nivel, no puede ejecutarse directamente en la computadora, necesita ser traducido a lenguaje de máquina. Esta traducción puede realizarla un programa llamado compilador. 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. ▪ El lenguaje de máquina o código binario consiste de instrucciones muy simples que la CPU de la computadora ejecuta directamente. Cada tipo de procesador tiene su propio lenguaje de máquina. Cada código binario es específico para cada plataforma. La Plataforma Java Introducción
  • 4. Algoritmos y Estructuras de Datos 2021 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. La Plataforma Java Introducción
  • 5. Algoritmos y Estructuras de Datos 2021 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). Programa.java Programa.class El java.exe es un programa que viene con la plataforma java, que permite ejecutar los bytecodes, es el intérprete java. Programa Compilador La Plataforma Java Introducción
  • 6. Algoritmos y Estructuras de Datos 2021 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 { public static void main(String[] args){ System.out.println(“Hola !!!”); } } HolaMundo.java Usando la JVM, la misma aplicación es capaz de ejecutar sobre las distintas plataformas => el código de bytes (.class) es independiente de la plataforma. HolaMundo.class Linux Windows Solaris HolaMundo.java La Plataforma Java Introducción
  • 7. Algoritmos y Estructuras de Datos 2021 • 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 instrucciones específicas para la MVJ • 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. La Plataforma Java Programa java MVJ API Plataforma (SO+Hard) La Plataforma Java
  • 8. Algoritmos y Estructuras de Datos 2021 Ediciones de Java ▪ 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. J2EE J2SE J2ME Soluciones Empresariales ▪ eCommerce ▪ eBusiness Soluciones Desktop ▪ Aplicaciones ▪ Applets Soluciones para el Consumidor ▪ Celulares, PDAs, TV ▪ navegación wireless
  • 9. 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
  • 10. Algoritmos y Estructuras de Datos 2021 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. La Plataforma Estándar de Java Java SE
  • 11. 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: java.exe javac.exe javadoc.exe jar.exe appletViewer.exe . . . librerías del programador (*.jar) JDK#.# lib bin jre bin lib ext rt.ja r tools.jar dt.jar . . . java.exe . . . classes clases del programador (*.class) Plataforma de ejecución (JRE) Se ejecutan desde la línea de comandos o indirectamente, usando algún entorno de desarrollo (IDE).
  • 12. 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
  • 13. ¿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?
  • 14. ¿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
  • 15. ¿Cómo hacer y ejecutar el primer programa usando Eclipse? Nombre de la clase Salva y compila Ejecuta (run)
  • 16. ¿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)
  • 17. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano 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.
  • 18. 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? Algunas funcionalidades . . . - Crear/Editar/Borrar/Bloquear Contacto - Enviar mensaje - Armar/Editar/Borrar grupo - Salir de un grupo Algunos datos . . . - Necesitamos disponer de contactos y de grupos de contactos. - Mensajes (texto, imagen/foto, video)
  • 19. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano nombre imagen participantes (conjunto de Contacto) origen, destino Contenido (texto, imagen, sonido, video) fechaHora salida fechaHora recibido fechaHora leido Contacto nombre imagen numero estado contactos (conjunto de Contacto o Grupo) Grupo Mensaje ¿Qué tipos de objetos manipulamos? editar contacto enviar mensaje bloquear, vaciar . . . enviar mensaje agregarParticipante . . . mostrar . . . Programación Orientada a Objetos
  • 20. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano El proceso de abstracción 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. ¿Cuál es el objetivo buscado por la programación orientada a objetos? 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. Programación Orientada a Objetos Fundamentos
  • 21. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano Programación Orientada a Objetos Fundamentos agentes u 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. 1º principio de programación orientado a objetos Encontramos que algunos objetos como mensajes, contactos, grupos, etc. son necesarios para implementar esta aplicación.
  • 22. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano 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. Ocultamiento de información 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. 2º principio de programación orientado a objetos Programación Orientada a Objetos Fundamentos . . . enviarMensaje a g r e g a r C o n t a c t o a r m a r G r u p o getNombre setNombre nombre=Lucía imagen= estado=activo . . . Comúnmente los objetos son como cápsulas opacas, con una interfaz pública y una representación privada. Este concepto se conoce como ocultamiento de información (information hiding). Permite eliminar de la vista cierta información propia del objeto, logrando mayor nivel de abstracción y facilitando los cambios del código.
  • 23. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano mensajes y métodos grupo.agregarParticipante(unContacto) 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. 3º principio de programación orientado a objetos receptor emisor mensaje (argumentos) 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. Programación Orientada a Objetos Fundamentos
  • 24. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano 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. - 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). mensajes y métodos vs. llamadas a procedimiento Programación Orientada a Objetos Fundamentos grupo.agregarParticipante(unContacto) grupo.agregarParticipante(Contacto c) receptor emisor receptor emisor contacto.agregarParticipante(Contacto c) ?
  • 25. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano Clases e instancias 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. 4º principio de programación orientado a objetos Una clase es un molde a partir de la cual se crean instancias con las mismas características y comportamiento. Programación Orientada a Objetos Fundamentos nombre imagen estado . . . Clase Contacto Instancia de Contacto -> Objeto . . . enviarMensaje a g r e g a r C o n t a c t o a r m a r G r u p o getNombre setNombre . . . enviarMensaje a g r e g a r C o n t a c t o a r m a r G r u p o getNombre setNombre nombre=Lucía imagen= estado=feliz . . . nombre imagen estado . . .
  • 26. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano Clases e instancias Un objeto o instancia es una entidad de software que combina un estado/datos y comportamiento/métodos. • 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. Programación Orientada a Objetos Fundamentos nombre imagen estado . . . Clase Contacto Instancia de Contacto -> Objeto . . . enviarMensaje a g r e g a r C o n t a c t o a r m a r G r u p o getNombre setNombre nombre imagen estado . . . . . . enviarMensaje a g r e g a r C o n t a c t o a r m a r G r u p o getNombre setNombre nombre=Lucía imagen= estado=feliz . . . Todos los objeto de tipo Contacto tendrán un nombre, una imagen, un estado, etc. pero cada uno tendrá un valor particular en esos atributos.
  • 27. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano ¿Qué tipos de mensajes tenemos? Programación Orientada a Objetos Fundamentos
  • 28. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano ¿Qué tipos de mensajes tenemos? MensajeImagen Programación Orientada a Objetos Fundamentos Origen Destino fechaHora salida fechaHora recibido fechaHora leido Mensaje emoticon MensajeConTexto audio MensajeAudio imagen video MensajeVideo texto MensajeEmoticon
  • 29. Algoritmos y Estructuras de Datos 2021 Profesores: Fava - Iuliano Herencia El conocimiento de una categoría más general, es también aplicable a una categoría mas específica y se denomina herencia. 5º principio de programación orientado a objetos 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. Programación Orientada a Objetos Fundamentos La programación orientada a objetos (POO) permite a las clases expresar similitudes entre objetos que tienen características y comportamiento común. Estas similitudes pueden expresarse usando herencia. Origen Destino fechaHora salida fechaHora recibido fechaHora leido Mensaje emoticon MensajeConTexto audio MensajeAudio imagen video MensajeVideo texto MensajeEmoticon MensajeImagen