Programación Orientada a Objetos y Estructura de Datos
Sinopsis del producto
Programación orientada a objetos y estructura de datos a fondo es un libro pensado para extender los conocimientos que fueron adquiridos a lo largo de los cursos de las asignaturas iniciales de programación; principalmente de Programación estructurada. La finalidad de iniciar explicando Programación Orientada a Objetos (POO) es proveer una herramienta que permita encapsular la lógica y la complejidad de aquellos algoritmos; ocultĆ”ndola para no verla. Y asĆ concentrarse en el anĆ”lisis, diseƱo y desarrollo de algoritmos con mayor grado de complejidad. Para quienes adquirieron sus conocimientos bĆ”sicos programando en C, la obra comienza explicando los conceptos principales de encapsulamiento implementĆ”ndolos con C++. Pero esto es solo el comienzo, ya que el curso de programación avanzada que se propone transita por los senderos del lenguaje Java. ĀæPor quĆ© Java? Porque hoy en dĆa, y desde hace mĆ”s de 20 aƱos, Java es el lenguaje de programación con mayor nivel de aceptación en el Ć”mbito profesional. La mayorĆa de las empresas desarrollan sus aplicaciones en Java. Y, aunque aquĆ el foco principal estarĆ” puesto sobre la lógica algorĆtmica, cuando implemente estos algoritmos con Java, el lector estarĆ” adquiriendo una destreza que le permitirĆ” incorporarse a trabajar en proyectos de desarrollo que utilicen este lenguaje.
AdemĆ”s, el lenguaje de programación Java provee una muy extensa biblioteca de clases, por lo que estaremos exentos de tener que programar nosotros mismos cuestiones que, a esta altura, resultarĆan triviales y bĆ”sicas.
En temas que si aborda son las estructuras lineales (listas, pilas, colas) y métodos de ordenamiento de colecciones, lo que le permite concentrarse en entender su lógica de programación; pues la implementación ya la provee el lenguaje Java.
VENTAJAS
⢠La obra se divide en dos partes: la primera abarca la Programación Orientada a Objetos. Todo este paradigma de programación esta implementado en Java. Se explica el lenguaje y se compara su sintaxis y semÔntica con C/C++; de modo que aquellos lectores que tengan conocimientos previos sobre estos lenguajes puedan notar la gran cantidad de similitudes que existen entre ambos y tomar nota sobre las diferencias.
⢠La segunda parte de la obra explica los algoritmos vinculados a las estructuras de datos mÔs complejas: Ôrboles y grafos. Algoritmos recursivos que permitan visitar todos los nodos de un Ôrbol; diferentes tipos de recorridos sobre Ôrboles y comparaciones entre las versiones recursivas e iterativas.
CONOZCA
⢠La tĆ©cnica de Complejidad AlgorĆtmica como un mĆ©todo analĆtico para comparar la eficiencia de algoritmos equivalentes; y se utiliza esta tĆ©cnica para clasificar los diferentes enfoques y/o mĆ©todos de ordenamiento. Para llegar a deducir, por ejemplo, que el algoritmo Quicksort es mucho mĆ”s eficiente que el Bubble sort.
APRENDA
⢠Patrones que delinean diferentes estrategias de diseƱo algorĆtmico: Greedy, Divide & conqueer y Programación dinĆ”mica. Finalmente, se estudian los algoritmos que resuelven los problemas tĆpicos sobre grafos: Dijkstra, Prim, Kruskal.
A QUIĆN VA DIRIGIDO
Es un libro, conciso, directo, cuidado, que puede servir para dos o tres cursos, según el plan de estudios que se aborde. Proporciona bases en los temas de algoritmos computacionales, estructuras de datos y complejidad computacional. Estos conocimientos contribuyen hacia la meta final en esta Ôrea de estudios: la construcción de software de gran calidad.
CONTENIDO:
1 Encapsulamiento a travƩs de clases y objetos .................................................................... 1
1.1 Introducción .................................................................................................................................... 2
1.2 Clases y objetos ............................................................................................................................. 2
1.2.1 Las clases .............................................................................................................................. 2
1.2.2 Miembros de la clase ............................................................................................................ 3
1.2.3 Interfaz y encapsulamiento .................................................................................................... 5
1.2.4 Estructura de una clase ......................................................................................................... 6
1.2.5 El constructor y el destructor ................................................................................................ 6
1.2.6 Los mƩtodos ......................................................................................................................... 7
1.2.7 Los objetos ............................................................................................................................ 8
1.2.8 Instanciar objetos .................................................................................................................. 8
1.2.9 Operadores new, delete y punteros a objetos ...................................................................... 9
1.2.10 Sobrecarga de mƩtodos ....................................................................................................... 9
1.3 Encapsulamiento de estructuras lineales ................................................................................. 10
1.3.1 AnƔlisis de la clase Pila ........................................................................................................ 10
1.3.2 Templates y generalizaciones .............................................................................................. 12
1.4 El lenguaje de programación Java .............................................................................................. 15
1.4.1 El programa principal en Java ............................................................................................ 17
1.4.2 Templates en C++, generics en Java .................................................................................. 18
1.4.3 Los wrappers (envoltorios) de los tipos de datos primitivos ............................................... 20
1.4.4 Autoboxing .......................................................................................................................... 20
1.5 Resumen ....................................................................................................................................... 21
2 Introducción al lenguaje de programación Java ................................................................ 23
2.1 Introducción .................................................................................................................................. 24
2.2 Comencemos a programar .......................................................................................................... 24
2.2.1 El Entorno Integrado de Desarrollo (IDE) ............................................................................. 25
2.2.2 Entrada y salida estƔndar .................................................................................................... 25
2.2.3 Comentarios en el código fuente ........................................................................................ 27
2.3 Tipos de datos, operadores y estructuras de control ............................................................... 27
2.3.1 El bit de signo para los tipos de datos enteros................................................................... 27
2.3.2 El compilador y la mƔquina virtual (JVM o JRE) .................................................................. 27
2.3.3 Estructuras de decisión ....................................................................................................... 28
2.3.4 Estructuras iterativas ........................................................................................................... 31
2.3.5 El tipo de datos boolean y las expresiones lógicas ............................................................ 32
2.3.6 Las constantes .................................................................................................................... 33
2.3.7 Arrays................................................................................................................................... 34
2.3.8 Matrices............................................................................................................................... 36
2.3.9 Literales de cadenas de caracteres .................................................................................... 38
2.3.10 Caracteres especiales ......................................................................................................... 40
2.3.11 Argumentos en lĆnea de comandos .................................................................................... 41
2.4 Tratamiento de cadenas de caracteres ...................................................................................... 42
2.4.1 Acceso a los caracteres de un string .................................................................................. 42
2.4.2 MayĆŗsculas y minĆŗsculas .................................................................................................... 43
2.4.3 Ocurrencias de caracteres .................................................................................................. 44
2.4.4 Subcadenas ........................................................................................................................ 44
2.4.5 Prefijos y sufijos ................................................................................................................... 45
2.4.6 Posición de un substring dentro de la cadena ................................................................... 45
2.4.7 Conversión entre números y cadenas ................................................................................ 46
2.4.8 Representación en diferentes bases numéricas ................................................................. 46
2.4.9 La clase StringTokenizer ...................................................................................................... 47
2.4.10 Comparación de cadenas ................................................................................................... 48
2.5 Resumen ....................................................................................................................................... 50
3 Programación orientada a objetos ........................................................................................ 51
3.1 Introducción .................................................................................................................................. 52
3.2 Clases y objetos ........................................................................................................................... 52
3.2.1 Los mƩtodos ....................................................................................................................... 53
3.2.2 Herencia y sobrescritura de mƩtodos ................................................................................. 56
3.2.3 El mƩtodo toString............................................................................................................... 56
3.2.4 El mƩtodo equals ................................................................................................................. 57
3.2.5 Declarar y ācrearā objetos.................................................................................................... 58
3.2.6 El constructor ...................................................................................................................... 59
3.2.7 Repaso de lo visto hasta aquĆ ............................................................................................. 60
3.2.8 Convenciones de nomenclatura ......................................................................................... 62
3.2.9 Sobrecarga de mƩtodos ..................................................................................................... 63
3.2.10 Encapsulamiento ................................................................................................................. 66
3.2.11 Visibilidad de los mƩtodos y los atributos ........................................................................... 68
3.2.12 Packages (paquetes) ........................................................................................................... 69
3.2.13 Estructura de paquetes y la variable CLASSPATH ............................................................. 70
3.2.14 Las APIs (Application Programming Interface) .................................................................... 71
3.2.15 Representación grÔfica UML ............................................................................................... 71
3.2.16 Importar clases de otros paquetes ..................................................................................... 72
3.3 Herencia y polimorfismo .............................................................................................................. 73
3.3.1 Polimorfismo ........................................................................................................................ 76
3.3.2 Constructores de subclases ............................................................................................... 78
3.3.3 La referencia super ............................................................................................................. 79
3.3.4 La referencia this ................................................................................................................. 82
3.3.5 Clases abstractas ................................................................................................................ 83
3.3.6 Constructores de clases abstractas ................................................................................... 86
3.3.7 Instancias ............................................................................................................................. 90
3.3.8 Variables de instancia .......................................................................................................... 91
3.3.9 Variables de la clase ............................................................................................................ 93
3.3.10 El garbage collector (recolector de residuos) ...................................................................... 93
3.3.11 El mƩtodo finalize ................................................................................................................ 94
3.3.12 Constantes .......................................................................................................................... 95
3.3.13 MƩtodos de la clase ............................................................................................................ 95
3.3.14 Clases utilitarias ................................................................................................................... 97
3.3.15 Referencias estƔticas .......................................................................................................... 98
3.3.16 Colecciones (primera parte) ................................................................................................ 99
3.3.17 Clases genƩricas ............................................................................................................... 104
3.4 Interfaces .............................................................................................................................. 107
3.4.1 Desacoplamiento de clases .............................................................................................. 109
3.4.2 El patrón de diseƱo de la factorĆa de objetos ................................................................... 111
3.4.3 Abstracción a través de interfaces .................................................................................... 111
3.4.4 La interface Comparable ................................................................................................... 112
3.4.5 Desacoplar aún mÔs ......................................................................................................... 116
3.4.6 La interface Comparator ................................................................................................... 119
3.5 Colecciones de objetos ............................................................................................................. 119
3.5.1 Cambio de implementación .............................................................................................. 122
3.5.2 El mƩtodo Collections.sort ................................................................................................ 122
3.6 Excepciones ........................................................................................................................... 126
3.6.1 Errores lógicos vs. errores fĆsicos ...................................................................................... 129
3.6.2 Excepciones declarativas y no declarativas ...................................................................... 129
3.6.3 El bloque tryācatch-finally.................................................................................................. 131
3.6.4 El mƩtodo printStackTrace ................................................................................................ 134
3.7 Resumen .................................................................................................................................. 134
4 Estructuras de datos lineales ............................................................................................... 135
4.1 Introducción ................................................................................................................................ 136
4.2 Estructuras estƔticas ................................................................................................................. 136
4.3 Estructuras dinƔmicas .............................................................................................................. 137
4.3.1 Operaciones asociadas a las estructuas .......................................................................... 138
4.4 Estructuras dinƔmicas en Java ................................................................................................. 138
4.4.1 Memoria dinƔmica y punteros ........................................................................................... 138
4.4.2 Estructura Nodo ................................................................................................................ 139
4.4.3 Lista enlazada .................................................................................................................... 139
4.4.4 Pila ..................................................................................................................................... 144
4.4.5 Cola ................................................................................................................................... 145
4.4.5.1 Cola (implementación mejorada) ....................................................................................... 146
4.4.6 Clases LinkedList, Stack y Queue..................................................................................... 147
4.4.7 Tablas de dispersión (Hashtable)....................................................................................... 148
4.4.8 Estructuras de datos combinadas .................................................................................... 150
4.4.9 Ćrboles............................................................................................................................... 152
4.4.10 Ćrbol Binario de BĆŗsqueda (ABB) ..................................................................................... 153
4.4.11 La clase TreeSet ................................................................................................................ 154
4.5 Resumen ..................................................................................................................................... 154
5 Compresión de archivos mediante el algoritmo de Huffman ....................................... 157
5.1 Introducción ................................................................................................................................ 158
5.2 El algoritmo de Huffman ............................................................................................................ 159
5.2.1 Paso 1 - Contar la cantidad de ocurrencias de cada carƔcter ......................................... 160
5.2.2 Paso 2 - Crear una lista enlazada ..................................................................................... 160
5.2.3 Paso 3 - Convertir la lista enlazada en el Ɣrbol Huffman .................................................. 161
5.2.4 Paso 4 - Asignación de códigos Huffman ........................................................................ 163
5.2.5 Paso 5 - Codificación del contenido ................................................................................. 164
5.2.6 Proceso de decodificación y descompresión ................................................................... 164
5.3 Aplicación prÔctica ..................................................................................................................... 164
5.3.1 Compresor de archivos (szzip.java) ................................................................................... 164
5.3.2 Descompresor de archivos (szunzip.java) ......................................................................... 165
5.3.3 Estructura del archivo .szcod (Ɣrbol Huffman) .................................................................. 165
5.3.4 Estructura del archivo .szdat (archivo comprimido) .......................................................... 166
5.3.5 El setup del ejercicio .......................................................................................................... 166
5.4 AnƔlisis de clases y objetos ...................................................................................................... 167
5.4.1 szzip.java ........................................................................................................................... 169
5.4.2 szunzip.java ....................................................................................................................... 170
5.5 Interfaces e implementaciones ................................................................................................. 171
5.5.1 ICode.java - Interface de los códigos Huffman ................................................................. 171
5.5.2 ITree.java - Interface del Ɣrbol binario o Ɣrbol Huffman .................................................... 171
5.5.3 IList.java - Interface de la lista enlazada ............................................................................ 172
5.5.4 ITable.java - Interface de la tabla de ocurrencias .............................................................. 172
5.5.5 IFileInput.java - Interface del archivo que vamos a comprimir o a restaurar .................... 173
5.5.6 IFileCode.java - Interface del archivo de códigos Huffman ............................................... 173
5.5.7 IFileCompressed.java - Interface del archivo comprimido ................................................ 174
5.6 Manejo de archivos en Java ...................................................................................................... 174
5.6.1 Leer un archivo (clase FileInputStream) ............................................................................ 175
5.6.2 Bytes sin bit de signo ........................................................................................................ 176
5.6.3 Escribir un archivo (clase FileOutputStream) ..................................................................... 176
5.6.4 Buffers de entrada y salida ................................................................................................ 177
5.7 Clases utilitarias ......................................................................................................................... 179
5.7.1 La clase UTree - Recorrer el Ɣrbol binario ......................................................................... 179
5.7.2 La clase UFile - Leer y escribir bits en un archivo ............................................................. 181
5.7.3 La clase UFactory - FactorĆa de objetos ........................................................................... 183
5.8 Resumen ..................................................................................................................................... 184
6 Recursividad ............................................................................................................................. 185
6.1 Introducción ................................................................................................................................ 186
6.2 Conceptos iniciales .................................................................................................................... 186
6.2.1 Funciones recursivas ......................................................................................................... 186
6.2.2 Finalización de la recursión ............................................................................................... 187
6.2.3 Invocación a funciones recursivas..................................................................................... 187
6.2.4 Funcionamiento de la pila de llamadas (stack) ................................................................. 188
6.2.5 Funciones recursivas vs. funciones iterativas ................................................................... 191
6.3 Otros ejemplos de recursividad ............................................................................................... 192
6.4 Permutar los caracteres de una cadena .................................................................................. 193
6.5 BĆŗsqueda binaria ....................................................................................................................... 197
6.6 Ordenamiento por selección ..................................................................................................... 199
6.7 La función de Fibonacci ............................................................................................................ 201
6.7.1 Optimización del algoritmo recursivo de Fibonacci .......................................................... 207
6.8 Resumen ..................................................................................................................................... 208
7 Ćrboles....................................................................................................................................... 209
7.1 Introducción ................................................................................................................................ 210
7.1.1 Tipos de Ɣrbol.................................................................................................................... 210
7.1.2 Implementación de la estructura de datos ....................................................................... 210
7.2 Ćrbol binario................................................................................................................................ 211
7.2.1 Niveles de un Ɣrbol binario ................................................................................................ 212
7.2.2 Recorrer los nodos de un Ɣrbol binario ............................................................................. 212
7.2.3 Recorrido en amplitud o āpor nivelesā ............................................................................... 212
7.2.4 Recorridos en profundidad (preorden, postorden e inorden) ........................................... 212
7.2.5 Implementación iterativa del recorrido en preorden .......................................................... 214
7.2.6 Implementación iterativa del recorrido en postorden ........................................................ 215
7.4 Ćrbol Binario de BĆŗsqueda ....................................................................................................... 217
7.4.1 Crear un Ćrbol Binario de BĆŗsqueda (ABB) ...................................................................... 218
7.4.2 Encapsulamiento de la lógica y la estructura de datos (clase Abb)..............................................220
7.4.3 Agregar un elemento al ABB (mƩtodo agregar) ................................................................ 221
7.4.4 Ordenar valores mediante un ABB (recorrido inOrden)..................................................... 223
7.4.5 Búsqueda de un elemento sobre un ABB (método buscar) ............................................. 224
7.4.6 Eliminar un elemento del ABB (mƩtodo eliminar) .............................................................. 225
7.5 Ćrbol n-ario ................................................................................................................................. 227
7.5.1 Nodo del Ɣrbol n-ario ........................................................................................................ 227
7.5.2 Recorridos sobre un Ɣrbol n-ario ...................................................................................... 228
7.5.3 Permutar los caracteres de una cadena ........................................................................... 229
7.5.4 Implementación de un āAutoSuggestā .............................................................................. 229
7.6 Resumen ..................................................................................................................................... 232
8 Complejidad algorĆtmica ........................................................................................................ 233
8.1 Introducción ................................................................................................................................ 234
8.2 Conceptos iniciales .................................................................................................................... 234
8.2.1 AnÔlisis del algoritmo de la búsqueda secuencial............................................................. 234
8.3 Notación O grande (cota superior asintótica) .......................................................................... 235
8.3.1 AnÔlisis del algoritmo de la búsqueda binaria ................................................................... 236
8.3.2 AnƔlisis del algoritmo de ordenamiento por burbujeo ...................................................... 238
8.4 Cota inferior (O) y cota ajustada asintótica (T) ..................
9789873832277
$36.967,00
99999 disponibles
Especificaciones
QuizƔs te interese
ĀæYa lo leĆste? ValorĆ” “Programación Orientada a Objetos y Estructura de Datos”
Debes acceder para publicar una valoración.

Jane Eyre
Vientos de libertad ------- 



Valoraciones
No hay valoraciones aĆŗn.