Professional Documents
Culture Documents
ARBOL GENEALOGICO
ALUMNA: PERALES APAICO, FLOR AMALIA
OBJETIVOS
Proporcionar un caso de estudio de ejemplo,
analizando el proceso completo, desde el
enunciado del problema hasta la implementacin.
Ilustrar la forma en que puede utilizarse un rbol
binario para resolver un problema.
Qu es?
<<interface>>
BinaryTreeADT
removeLeftSubtree()
removeRightSubtree()
removeAllElements()
isEmpty()
size()
contains()
find()
iteratorInOrder()
iteratorPreOrder()
iteratorPostOrder()
iteratorLevelOrder()
Sin embargo, uno de los requisitos de nuestro problema es la
capacidad de guardar nuestro trabajo en un archivo y luego
volver a cargar los datos en un momento posterior. Este
requisito sugiere que la mejor solucin puede ser extender la
implementacin basada en matriz.
Las implementaciones basadas en matriz suelen ser mas
fciles de guardar en un archivo y de recargarlas
posteriormente en la memoria.
Suponiendo entonces, que vamos a extender la implementacin
basada en matriz de un rbol binario, con el fin de crear el rbol
genealgico, Qu vamos a almacenar en cada nodo del rbol ?.
Podramos simplemente almacenar un objeto para representar
cada persona dentro del rbol genealgico. Sin embargo de
forma similar a lo que hemos hecho con las anteriores colecciones,
lo mejor ser que creemos un objeto que actu como contenedor
para cada nodo del rbol. De esta forma, podemos crear una
clase Person para representar a cada persona que incluyamos en
el rbol y crear una clase AncestorNode que sirva como
contenedor para esa persona dentro del contexto del rbol. La
ventaja de esta tcnica es que podremos entonces crear una
representacin genrica de AncestorTree (rbol genealgico) que
podr instanciarse para representar personas, mascotas, ganado o
cualquier otro animal.
CLASE Person: Debe almacenar la representacin bsica acerca de una
persona que pueda resultar til en el estudio de los antepasados de un
individuo cualquiera; en este sentido, puede almacenarse el nombre, el
apellido, la fecha de nacimiento, la fecha de defuncin, la profesin y la
direccin, esta clase necesitar proporcionar un constructor, un mtodo
compareTo (El mtodo compareTo se usa para comparar dos cadenas) y
un mtodo toString (mtodos toString() que devuelve un tipo String)
CLASE AncestorNode: Proporcionar una lista doblemente ordenada para
representar los hermanos correspondientes a un nodo dado, as como una
variable para almacenar la persona (o el animal) representado por cada
nodo. Adems la clase AncestorNode proporcionara un constructor, un
mtodo para aadir un hermano y un mtodo toString.
Las clases restantes son AncestorGui para GUI y AncestorDemo para el
controlador. La clase AncestorGui permite un par de posibilidades distintas.
La interfaz podra estar basada simplemente en formularios con una
imagen grafica que mostrara el rbol resultante.
IMPLEMENTACION DE UN ARBOL GENEALOGICO
Como hemos indicado en la seccin anterior, vamos a implementar
cuatro componentes principales: el controlador, la interfaz, el rbol
genealgico (AncestorTree) y la clase Person. A lo largo de este
proceso, crearemos una clase AncestorNode para dar soporte a
AncestorNode y reutilizaremos las siguientes clases de nuestras
explicaciones anteriores:
ArrayBinaryTree
BinaryTreeADT
ListADT
OrderedListADT
DoubleList
DoubleNode
DoubleOrderedList
ArrayList
ArrayUnorderedList
UnorderedListADT