estructuras de datos y algoritmos -...

21
Estructuras de Datos y Algoritmos Primeros ejemplos de TDA

Upload: trinhcong

Post on 21-Sep-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Estructuras de Datos y Algoritmos

Primeros ejemplos de

TDA

Page 2: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Repaso POO

Page 3: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Programación Orientada a Objetos

• Principios–encapsulamiento

–abstracción

–herencia

–polimorfismo

Page 4: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

POO y Java: encapsulamiento

• Todo está dentro de clases

• variables, métodos y constructores

• dentro de una clase deben ir solo cosas relacionadas

• variables y los métodos que utilizan esas variables

• ejemplo

Page 5: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

POO y Java: abstracción

• Private: permite restringir el acceso a los campos de la clase para que se deban usar los métodos que realmente definen lo que es el TDA que se está implantando

• Las variables y clases estáticas permiten cambiar el estado de todos los objetos en la clase

• ejemplo

Page 6: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

POO y Java: Polimorfismo

• Un método puede decidir dinámicamente (al momento de la ejecucuón) qué va a hacer.

• ejemplo

Page 7: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

POO y Java: herencia

• Hay clases y hay subclases (extensiones de clase)

• lo que está en la clase también está en la subclase

• la subclase puede redefinir métodos y variables

• ejemplo

Page 8: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

TDA

• Un tipo de dato abstracto es una colección de datos sobre los cuales se define un conjunto de operaciones

• Una clase de Java es ideal para implantar TDAs:

• clase encapsula datos y operaciones

– variables definen la estructura de datos

– métodos públicos son las operaciones que definen el TDA

Page 9: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Metáfora del TDA

• Conjunto de operaciones forman una pared

• forman una interfase entre los programas y la estructura de datos

Page 10: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Diseño de una Clase

Page 11: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Ilustración Creación Clase

Abstracción: ¿Qué es una esfera?

• Una esfera está completamente determinada por su radio

• todo lo demás es irrelevante o se puede calcular a base del radio

• operaciones: radio, circunferencia, volumen, area, diámetro.

Page 12: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

TDA Esfera:

• Una esfera es un número real positivo llamado radio con las siguientes operaciones:– construir(r): construye una esfera de radio r

– radio(): devuelve el radio

– diametro(): devuelve el diámetro

– volumen(): devuelve el volumen

– area(): devuelve el área de la superficie

– circunferencia(): devuelve la circunferencia

Ilustración Creación Clase

Page 13: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Diseño de Estructura de Datos:

• basta con una variable double para almacenar el radio

Ilustración Creación Clase

Page 14: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Diseño de Algoritmos:• construir(r): si (r>=0) radio = r; si no radio=0.0;

• radio(): devuelve radio

• diametro(): devuelve 2.0 * radio

• volumen(): devuelve 4.0 * π * radio2

• area(): devuelve (4.0 * π * radio3) / 3.0

• circunferencia(): devuelve 2.0 * radio * π

Ilustración Creación Clase

Page 15: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

public class Sphere {

private double theRadius;

public Sphere(double initialRadius) {

if (initialRadius >= 0) theRadius = initialRadius;

else theRadius = 0.0;

} // end constructor

public double radius() {

return theRadius;

} // end radius

public double diameter() {

return 2.0 * theRadius;

} // end diameter

public double circumference() {

return Math.PI * diameter();

} // end circumference

public double area() {

return 4.0 * Math.PI * theRadius * theRadius;

} // end area

public double volume() {

return (4.0*Math.PI * Math.pow(theRadius, 3.0)) / 3.0;

} // end volume

} // end Sphere

Ilustración Creación Clase(modificado del texto)

Page 16: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Otra Clase

• Clase esfera con color

• ¡No reinvente la rueda!

Page 17: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Creación Otra Clase

Abstracción: ¿Qué es una esfera con color?

• Ya creamos una esfera

• Es una esfera con un atributo de color

• operaciones: crear, color y todas las operaciones de la esfera.

Page 18: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

TDA Esfera con color:

• Una esfera con color añade a la esfera un atributo color y las siguientes operaciones:– construir(c,r): construye una esfera de radio r y

color c

– color(): devuelve el color

Creación Otra Clase

Page 19: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Diseño de Estructura de Datos:

• basta con una variable Color llamada color para almacenar el color

Creación Otra Clase

Page 20: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

Diseño de Algoritmos:• construir(c,r): construir(r); color = c;

• color(): devuelve color

(note que construir(r) se refiere a la operación construir del TDA esfera)

Creación Otra Clase

Page 21: Estructuras de Datos y Algoritmos - mate.uprh.edumate.uprh.edu/~jse/cursos/4097/notas/transparencias/TDA.pdf · POO y Java: abstracción • Private: permite restringir el acceso

import java.awt.Color;

public class ColoredSphere extends Sphere {

private Color color;

public ColoredSphere(Color c, double initialRadius) {

super(initialRadius);

color = c;

} // end constructor

public Color getColor() {

// Returns the color of the sphere.

// Precondition: c is the desired color.

// Postcondition: None.

return color;

} // end getColor

} // end ColoredSphere

Creación Otra Clase (modificado del texto)