You are on page 1of 21

Estructuras de Datos y

Algoritmos

Primeros
ejemplos de
TDA
Repaso POO
Programacin Orientada a
Objetos

Principios
encapsulamiento
abstraccin
herencia
polimorfismo
POO y Java:
encapsulamiento
Todo est dentro de clases
variables, mtodos y constructores
dentro de una clase deben ir solo cosas
relacionadas
variables y los mtodos que utilizan esas
variables
ejemplo
POO y Java: abstraccin

Private: permite restringir el acceso a los


campos de la clase para que se deban usar
los mtodos que realmente definen lo que es
el TDA que se est implantando
Las variables y clases estticas permiten
cambiar el estado de todos los objetos en la
clase
ejemplo
POO y Java:
Polimorfismo

Un mtodo puede decidir dinmicamente (al


momento de la ejecucun) qu va a hacer.
ejemplo
POO y Java: herencia

Hay clases y hay subclases (extensiones de


clase)
lo que est en la clase tambin est en la
subclase
la subclase puede redefinir mtodos y
variables
ejemplo
TDA

Un tipo de dato abstracto es una coleccin 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
mtodos pblicos son las operaciones que definen el
TDA
Metfora del TDA

Conjunto de operaciones forman una pared


forman una interfase entre los programas y
la estructura de datos
Diseo de una Clase
Ilustracin Creacin Clase

Abstraccin: Qu es una esfera?


Una esfera est completamente determinada
por su radio
todo lo dems es irrelevante o se puede
calcular a base del radio
operaciones: radio, circunferencia,
volumen, area, dimetro.
Ilustracin Creacin Clase

TDA Esfera:
Una esfera es un nmero real positivo llamado
radio con las siguientes operaciones:
construir(r): construye una esfera de radio r
radio(): devuelve el radio
diametro(): devuelve el dimetro
volumen(): devuelve el volumen
area(): devuelve el rea de la superficie
circunferencia(): devuelve la circunferencia
Ilustracin Creacin Clase

Diseo de Estructura de Datos:


basta con una variable double para
almacenar el radio
Ilustracin Creacin Clase

Diseo 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 *
Ilustracin Creacin Clase
(modificado del texto)

public class Sphere { public double circumference() {


private double theRadius; return Math.PI * diameter();
} // end circumference
public Sphere(double initialRadius) {
if (initialRadius >= 0) theRadius = initialRadius; public double area() {
else theRadius = 0.0; return 4.0 * Math.PI * theRadius *
} // end constructor theRadius;
} // end area
public double radius() {
return theRadius; public double volume() {
} // end radius return (4.0*Math.PI * Math.pow(theRadius,
3.0)) / 3.0;
public double diameter() { } // end volume
return 2.0 * theRadius; } // end Sphere
} // end diameter
Otra Clase

Clase esfera con


color

No reinvente la
rueda!
Creacin Otra Clase

Abstraccin: 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.
Creacin Otra Clase

TDA Esfera con color:


Una esfera con color aade 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
Creacin Otra Clase

Diseo de Estructura de Datos:


basta con una variable Color llamada color
para almacenar el color
Creacin Otra Clase

Diseo de Algoritmos:
construir(c,r): construir(r); color = c;
color(): devuelve color

(note que construir(r) se refiere a la operacin construir del


TDA esfera)
Creacin Otra Clase
(modificado del texto)

import java.awt.Color;
public class ColoredSphere extends Sphere {
private Color color;

public Color getColor() {


public ColoredSphere(Color c, double
initialRadius) { // Returns the color of the sphere.
super(initialRadius); // Precondition: c is the desired color.
color = c; // Postcondition: None.
} // end constructor return color;
} // end getColor

} // end ColoredSphere

You might also like