Está en la página 1de 32

lOMoARcPSD|8831459

Resumen de POO

Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Paradigmas :

Un paradigma de programación es un estilo de desarrollo de programas.

Tipos:

Paradigma de software: Es un enfoque particular o filosofía para la construcción del

software. Este paradigma resulta más apropiado que otros.

Paradigma de programación: Imperativo, orientado a objetos, lógico, funcional, orientado a

aspectos.

Imperativo: Es un paradigma de programación que describe la programación en términos del

estado del programa y sentencias que cambian dicho estado. Pascal, Fortran, C, etc.

Algoritmo + Estructura de datos = Programas.

Orientad a objetos: Es un paradigma de programación que define los programas en términos

de “Clases de objetos”, objetos que son entidades que cambian estados(es decir datos),

comportamientos e identidad. Conjunto de objetos, que colaboran entre ellos para realizar

tareas. Java, visual Basic, C++, etc.

Objeto + Mensaje = programa.

Lógica: Conjunto de hechos y conjuntos de reglas que permite la dirección de otros hechos,

su hábitat natural se encuentra en aplicaciones de inteligencia artificial.

Funcional: Esta constituido únicamente por definiciones de funciones, entendiendo estas no

como subprogramas clásicos de un lenguaje imperativo, sino como funciones permanente

mutación.
lOMoARcPSD|8831459

Orientada a aspecto: Busca resolver el problema de la “Separación de incumbencias”, de

manera sistemática, clara y eficiente.

Encapsulamiento, herencia y polimorfismo en BDOO

El encapsulamiento consiste en unir en la Clase las características y

comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad.

En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento

se logra gracias a la abstracción y el ocultamiento.

La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que

tendremos a las Clases como cajas negras donde sólo se conoce el comportamiento pero

no los detalles internos, y esto es conveniente porque nos interesará será conocer qué

hace la Clase pero no será necesario saber cómo lo hace.

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

La herencia

Propiedad a través de la cual los objetos heredan comportamiento dentro de una

jerarquía de clases.

Las clases o tipos heredan de sus ancestros.

La herencia es uno de los mecanismos de los lenguajes de programación orientada a

objetos basados en clases, por medio del cual una clase se deriva de otra de manera que

extiende su funcionalidad. La clase de la que se hereda se suele denominar clase

base, clase padre, superclase, clase ancestro (el vocabulario que se utiliza suele depender

en gran medida del lenguaje de programación).

 Ventajas de la herencia

 1.            Ayuda al modelado porque proporciona una descripción concisa y precisa del

mundo.

 2 Ayuda a compartir especificaciones e implementaciones en las aplicaciones.


lOMoARcPSD|8831459

Polimorfismo

Propiedad de una operación mediante la cual puede ser aplicada a distintos tipos de

objetos.

El polimorfismo se refiere al uso de la misma firma de mensaje para dirigir diferentes

métodos en diferentes clases. Cuando el diseñador envía una señal a un objeto, el método

de la clase de objeto, posiblemente heredado, procesa la señal.

Un método puede tener acceso directamente a atributos de un objeto destino por no

nombre, al incluir cualesquiera atributos heredados de clases padres, pero debe tener

acceso a atributos de otros objetos con señales secundarias.

En síntesis este concepto permite enlazar el mismo nombre o símbolo de operador a

dos o más implementaciones diferentes del operador, dependiendo del tipo de objetos a

los que éste se aplique.

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Ingeniera de software:

Trata sobre la construcción de sistemas de software tan grandes o complejos, que son

construidos por un equipo o equipos de ingenieros.

Un programador escribe un programa completo, mientras que un ingeniero de software

escribe un componente de software que será combinado con componentes escritos por otros

ingenieros de sistemas, para construir un sistema.

Etapas del Ciclo de Vida de un Proyecto:

• Estudio de factibilidad : Se realiza el análisis de riesgos, estimación de costos, planificación

temporal y organización de recursos.

• Especificación de requerimientos : Se detalla que es lo que se quiere realizar, se presentan los

resultados y el uso de la aplicación.

• Diseño y especificación : Se transforma la arquitectura general de análisis, a una arquitectura

particular y detallada del sistema que satisfaga todos los requisitos del sistema.

• Codificación y testeo de módulos : Creación de los módulos en un lenguaje de programación.

• Testeo del sistema : Comprobación del funcionamiento de la aplicación. Prueba alfa y prueba

beta.

• Liberación y mantenimiento : Corrección de defectos y errores, incluir nuevas prestaciones.

Calidad de software:

La ingeniera de software busca calidad.

Cinco perspectivas diferentes sobre calidad:


lOMoARcPSD|8831459

• Visión transcendental : Algo se puede reconocer, pero no se puede definir.

• Visión del usuario : Adecuación al propósito.

• Visión del manufactureo : Conformidad con la especificación.

• Visión del producto : Características inherentes del producto.

• Visión basada en el valor : Cantidad de dinero que quiere pagar el usuario.

Características operativas:

• Corrección: Si la aplicación realiza los objetivos propuestos.

• Fiabilidad: El tiempo que la aplicación lleva a cabo las tareas.

• Eficiencia: Cantidad de recursos hardware y software que necesita la aplicación.

• Integridad: Restringir los datos a personal no autorizado.

• Facilidad de uso: Una aplicación que sea fácil manejar y aprender.

Capacidad de soportar los cambios:

• Facilidad de mantenimiento: Esfuerzo requerido para localizar y reparar errores.

• Flexibilidad: Esfuerzo requerido para modificar.

• Facilidad de prueba: Esfuerzo requerido para probar la aplicación.

Adaptabilidad a nuevos cambios:

• Portabilidad: Esfuerzo requerido para trasladar la aplicación a otra plataforma.

• Reusabilidad: Partes de una aplicación puede utilizarse en otras aplicaciones.

• Interoperabilidad: Esfuerzo requerido para comunicar la aplicación con otras aplicaciones o

sistema operativo.

Modularizacion:

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Cuando un programa comienza a ser largo y complejo, no es apropiado tener un único texto

con sentencias una tras otra. La razón es que no se comprende bien qué hace el programa

debido a que se intenta abarcar toda la solución a la vez.

Los lenguajes de alto nivel disponen de una herramienta que permiten estructurar el

programa principal como conjunto de subprogramas que resuelven problema parcial del

problema principal.

Procedimientos: Un procedimiento es una construcción que permite dar un nombre a un

conjunto de sentencias y declaraciones asociadas que se usan para resolver un subproblema

dado.

Funciones: Son un conjunto de sentencias que se ejecutan constantemente, la diferencia entre

estas y los procedimientos es que la funciones regresan un valor.

Uso en Java:

Variables globales y locales:

En Java cada identificador tiene un campo de acción, solo dentro de éste campo es posible

utilizarlo. Los ejemplos más claros son las variables, que pueden ser globales o locales. La

diferencia estriba en que una variable global puede ser utilizada por cualquier parte del

programa, incluyendo a todos los procedimientos, en cambio una variable local puede ser

utilizada únicamente por el procedimiento en el que está declarada, el programa principal y los

otros procedimientos la toman como inexistente.

Parámetros :
lOMoARcPSD|8831459

Para poder pasar información entre el programa principal y procedimientos, o entre los

mismos procedimientos usamos los parámetros, que son los canales de comunicación de

datos.

Criterios de una buena Modularizacion:

• Descomposición modular : La descomposición de un problema en un subproblema menos

complejos, conectados por una estructura simple, y que puede resolverse en forma

independiente.

• Composición modular : Elementos de software que pueden ser cambiados para crear nuevos

sistemas, en un entorno diferente.

• Entendimiento modular : Facilita que quien lea un modulo pueda comprenderlo sin necesidad

de acudir a otros módulos.

• Continuidad modular : Cuando se realizan cambios en un solo modulo, no tendrá efecto en los

otros módulos con los que se relaciona.

• Protección modular : En tiempo de ejecución solo afecta al modulo donde se produce, o solo se

propaga a los módulos vecinos.

Reglas para asegurar la modularidad:

• Mapeo Directo : La estructura modular ideada en el proceso de construcción del sistema de

software debe ser compatible con los elementos generados en el proceso de modelamiento del

dominio del problema.

• Pocas interfaces : Todo módulo debe comunicarse con el menor número posible de otros

módulos.

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

• Interfaces pequeñas: Si dos módulos se comunican deberían intercambiar la menor cantidad

de información posible.

• Interfaces Explícitas : La forma de comunicación entre dos módulos debe ser obvia a partir de

sus códigos.

• Ocultamiento de Información : El diseño de todo módulo debe contener un subconjunto de

propiedades que son públicas y un subconjunto de propiedades que son privadas.

Abstracción:

Los procedimientos y funciones fueron uno de los primeros mecanismos de abstracción que

se utilizaron ampliamente en la programación.

Tipo de datos: Un tipo de datos en un conjunto de valores, y un conjunto de operaciones

sobre estos valores. Por ejemplo, Pascal soporta tipos base como enteros, reales, caracteres

y tipo compuestos como array y registros. Pascal soporta tipos base como enteros, reales,

caracteres y tipos compuestos como Arrays y registros.

Abstracción de datos:

Es una técnica que permite diseñar programas cortos, legibles y flexibles.

Tipos Abstractos de Datos :

Está constituido por la estructura de datos y las operaciones. Se componen de estructura de

datos y los procedimientos o funciones que manipulan esas estructuras de datos.

TAD = Representación + Operaciones.

Ventajas:

• Mejor conceptualización.

• Robustez del sistema.


lOMoARcPSD|8831459

• Mejora rendimiento.

• Especificación.

• Extensibilidad.

• Agrupan las operaciones y la representación de atributos.

Polioliticos:

Información simple pero dependiente de un comportamiento estructural.

Monolíticos:

La información no es relacionada mediante ninguna estructura y no admiten más que un

valor en cada momento.

Objetos y clases:

La programación orientados a objetos se basa en la idea de un objeto, que es una

combinación de variable locales y procedimientos llamadas métodos que juntos conforman una

entidad de programación.

Objeto: Representa un elemento individual e identificable, real o abstracto. con un

comportamiento bien definido en el dominio del problema.

Estado: Se encuentra representado por campos de datos, con sus respectivos valores.

Comportamiento: Se encuentra definido por un conjunto de métodos. Los métodos de

un objeto significan que usted solicita que el objeto realice una tarea. Identidad:

Característica que los distingue del resto de los objetos.

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Clases:

Conjunto de objetos que comparten una estructura común y comportamiento común.

Objetos que poseen los mismos atributos y el mismo comportamiento.

Personas

Ejemplo: María Juan Pedro

Facultad:

Alumno
Cursa

Asignaturas Dicta Docentes

Se dicta
Aulas
en

Clases y TDA:
lOMoARcPSD|8831459

Los TAD están implementados, en cada lenguaje de programación orientado a objetos

mediante el concepto de clase.

Características generales:

Abstracción: Una clase es una abstracción en la que se enfatizan las características

relevantes. Las clases son el elemento clave de la programación orientada a objetos. Una clase

puede definirse como una descripción abstracta de un grupo de objetos, teniendo cada uno de

ellos un estado específico.

Encapsulamiento: Establece atributos propios de un objeto no deben ser visibles desde

otros objetos. Separa la parte pública de lo privado. Es el mecanismo que une el código y los

datos que éste manipula, manteniéndolos seguros de las interferencias del exterior.

Herencia: Es una relación entre clases en la cual una clase comparte la estructura y

comportamiento definido en otra clase. Tiene como uno de sus objetivos la reusabilidad del

código.

Herencia simple: Puede heredar datos y métodos únicamente de una sola clase.

Herencia múltiple: Una subclase puede heredar datos y métodos de más de una clase.

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Polimorfismo: Indica la posibilidad de que una entidad tome diferente formas. Se refiere al

hecho de que una misma operación puede tener diferente comportamiento en diferentes

objetos. Permite referirse a objetos de clases diferentes mediante el mismo elemento de

programa y efectuar la misma operación de diferentes formas, en función del objeto que es

referenciado en ese momento.

En java es utilizada por los métodos de clase y métodos de instancia que son privados o

final.

Puede darse por:

Sobrescritura:

Reemplazar los métodos de la superclase en las subclases.

Sobrecarga:

Varios métodos se llaman igual, pero difieren en el número, tipo u orden de sus argumentos.

Principios de la construcción de software:

Unidad modular lingüística: Los módulos deben corresponderse con unidades sintácticas en

el lenguaje utilizado.

Auto-documentación: Toda la documentación interna sobre el modulo debería ser parte del

propio modulo.
lOMoARcPSD|8831459

Acceso uniforme: El servicio ofrecido por un modulo debería estar disponible a través de una

notación uniforme, la cual no revele si están implementadas a través del almacenamiento o a

través de un computo.

Abierto: Si está disponible para ser extendido, debería ser posible expandir un conjunto de

operaciones o adicionar campos a su estructura de datos.

Cerrado: Si está disponible para ser utilizado. Esto asume que el modulo ha dado una

descripción bien definida y estable.

Cambio simple: Un sistema debe soportar siempre un conjunto de alternativas.

Lenguajes puros: Soportan objetos. Poseen componentes caracterizados por un

comportamiento y un estado. Ejemplo: Ruby.

Lenguajes híbridos: Además de objetos disponen de comportamiento tipo clase. Ejemplo:

C++, Java, Python.

UML:

Permite modelar, construir y documentar los elementos que forman un sistema de software.

Asociación: Se representa mediante una línea.

Roles: Indica que hace en la clase.

Agrupación: Relación entre el todo y sus partes.

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Composición: liga la existencia de los componentes al a de la clase compuesta.

Herencia: Una clase hereda datos y estructura de otra.

1. Portabilidad : Esfuerzo requerido para trasladar la aplicación a otra plataforma. Reusabilidad:

Partes de una aplicación puede utilizarse en otra aplicación.

Interoperabilidad: Esfuerzo necesario para comunicar la aplicación con otra aplicación o

sistema operativo.

2. Procedimiento : Un procedimiento es una construcción que permite dar un nombre a un

conjunto de sentencias y declaraciones que se usan para resolver un subproblema dado.

Funciones: Son un conjunto de sentencias que se ejecutan constantemente, la diferencia

entre estos y los procedimientos es que las funciones regresan un valor.

3. Paradigma orientada a objetos:


lOMoARcPSD|8831459

Es un paradigma que define los programas en términos de “Clases de objetos”, objetos que

son entidades que cambian estados(es decir, datos).

4. Objeto : Representa un elemento individual, real o abstracto. Como por ejemplo una persona.

Clase: Conjunto de objetos que comparten una estructura en común y un comportamiento

en común.

5. Programación orientada a objetos :

Se basa en la idea de un objeto, que es una combinación de variables locales llamadas

métodos que juntos conforman una entidad de programación.

1. Características operativa:

• Corrección : Si la aplicación realiza los objetivos propuestos.

• Fiabilidad : El tiempo que la aplicación lleva a cabo las tareas.

• Integridad : Restringir los datos a personal no autorizado.

• Facilidad de uso : Una aplicación que sea de fácil uso.

• Eficiencia : Cantidad de recursos hardware y software.

Capacidad de soportar cambios:

• Facilidad de mantenimiento : Esfuerzo requerido para localizar y reparar errores.

• Flexibilidad : Esfuerzo requerido para modificar.

• Facilidad de prueba : Esfuerzo requerido para probar la aplicación.

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Adaptabilidad a nuevos cambios:

• Portabilidad : Esfuerzo requerido para trasladar la aplicación a otra plataforma.  Reusabilidad

: Partes de una aplicación pueden utilizarse en otra aplicación.

• Interoperabilidad : Esfuerzo necesario para comunicar la aplicación con otra aplicación o

Sistema operativo.

2. Modularizacion : Los lenguajes de alto nivel disponen de una herramienta que permite

estructura el programa principal como compuesto de subprograma que resuelven un problema

parcial del problema principal.

Descomposición modular: La descomposición de un problema en un subproblema menos

complejos, conectados por una estructura simple, y que pueden resolverse en forma

independiente.

Composición modular: Elementos de software que pueden ser cambiados para crear nuevos

sistemas en un entorno diferente.

Entendimiento modular: Facilita que quien lea un modulo pueda comprenderlo sin necesidad

de acudir a otros módulos.

Continuidad modular: Cuando se realizan cambios en un solo modulo, no tendrá efecto en

los otros módulos con los que se relacionan.

Protección modular: En tiempo de ejecución solo afecta al modulo donde se produce, o solo

se propaga a los módulos vecinos.


lOMoARcPSD|8831459

3. TDA : Está constituido por la estructura de datos y las operaciones. Se compone de estructura

de datos y los procedimientos o funciones que manipulan esa estructura de datos.

Ventajas: Mejor conceptualización, mejor rendimiento, especificación, extensibilidad,

robustez.

4. Abstracción: Una clase es una abstracción en la que se enfatiza las características relevantes.

Herencia: Es una relación entre clases en la cual una clase comparte la estructura y

comportamiento definido en otra clase.

Métodos:

Es la implementación de un algoritmo que representa una operación o función que un objeto

realiza. Los conjuntos de los métodos de un objeto determinan el comportamiento del objeto.

Constructores:

Un constructor es un método que se llama automáticamente cada vez que sea crea un

objeto de una clase. La principal misión del constructor es inicializar las variables miembro de

la clase.

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Se llama constructor por defecto al constructor que no tiene argumentos.

Si no se prepara ningún constructor para una clase, el compilador crea un constructor por

defecto, inicializando las variables de los tipos primitivos a su valor por defecto, y los String y

las demás referencias a objetos a null.

Referencia al objeto actual: This

La palabra This es una referencia al propio objeto en el que estamos.

This.atributo. Para acceder a una propiedad del objeto actual.

This.metodo (parámetros). Permite llamar a un método del objeto actual con los

parámetros indicados.

This (parámetros). Se usa por ejemplo para pasarlo como parámetro a un método cuando

es llamado desde la propia clase.

Recolección de basura:

Java posee un recolector de basura encargado de reclamar la memoria que los objetos ya

no utilizan.

Método finalize:

Es un método que se llama automáticamente cuando se va a destruir un objeto, un

finalizador es un método de objeto (no static), sin valor de retorno (void), sin argumentos y que

siempre se llama finalize().

Recursividad:
lOMoARcPSD|8831459

Es un método que puede llamarse a sí mismo, se descompone el problema en problemas de

menor complejidad.

Recursividad indirecta: Puede llamar a otro método, que a su vez puede hacer una llamada

al primero.

Miembros static y final:

Variables miembros:

Miembros de objetos: Cada objeto tiene su propia copia de las variables miembro.

Miembros de clases: Una clase puede tener variables de la clase y no de cada objeto, a

estas variables se las llame variables de clase o static.

Variables finales (final): Una variable declarada como final no puede cambiar su contenido a

lo largo de la ejecución del programa.

Argumentos finales:

Significa que dentro del método no podremos cambiar el manejador de argumento al que se

apunta en la llamada al método.

Métodos de una clase (Static):

Son métodos que no actúan sobre objetos concretos a través del operador punto. Estos

métodos no tienen sentido como métodos de objeto. Ejemplo: java.lang.Math (sin(), cos(),

exp(), pow(), etc).

Clases anidadas:

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Una clase anidada está limitada por el alcance de su clase externa. Si una clase B es

definida dentro de una clase A, entonces la clase B es conocida para A, pero no fuera de A.

Clases anidadas estáticas:

Clase a la que se la ha aplicado el modificador static, no puede referirse directamente a los

miembros de su clase envolvente.

Clases anidadas interiores:

Es una clase anidada no estática. Accede a todas las variables y métodos de su clase

envolvente y puede referirse a ellos de manera directa de la misma manera que otros

miembros no estáticos de clase envolvente.

Unidad 5.

Herencia:

Cada vez que encontremos la relación “es-un” entre dos clases, estamos ante la presencia

de herencia.

Constructor en clases derivadas:

El constructor de una clase derivada puede llamar al constructor de su superclase por medio

de la palabra súper: súper (lista de parámetros);


lOMoARcPSD|8831459

Otro uso:

Super.miembro: donde miembro puede ser un método o una variable de instancia.

Herencia y polimorfismo:

Sobrescritura de métodos:

Una clase puede redefinir cualquiera de los métodos heredados de su superclase que no sean

final. El nuevo método sustituye al heredado para todos los efectos en la clase que lo ha

redefinido. Los métodos de la superclase que han sido redefinidos pueden ser todavía

accedidos por medio de la palabra súper desde los métodos de la clase derivada, aunque con

este sistema sólo se puede subir un nivel en la jerarquía de clases. Los métodos de clase o

static no pueden ser redefinidos en las clases derivadas.

Selección de métodos en forma dinámica:

Es el mecanismo a través del cual la llamada a un método sobrescrito se resuelve en tiempo

de ejecución, en lugar de en tiempo de compilación.

Es importante ya que es como java implementa el polimorfismo en tiempo de ejecución.

Utilización de final con la herencia:

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Un método declarado como final en una clase, no puede ser sobrescrito en una clase

derivada.

Una clase declarada final no puede tener clases derivadas.

Control de acceso:

Prívate: Un miembro privado es accesible solo para la clase en la que está definido. Esto

incluye las variables, o los métodos que llamados desde el exterior pueden poner en peligro el

estado del objeto o del programa donde se están ejecutando.

Protected: Permite a la propia clase, las subclases, y todas las clases dentro del mismo

paquete que accedan a los miembros. Se utiliza para una subclase de la clase tener acceso a

los miembros, pero no las clases relacionadas.

Public: Todas las clases, en todos los paquetes tienen acceso a los miembros públicos de

la clase. Los miembros públicos se declaran solo si su acceso no produce resultados

indeseados si un extraño los utiliza.

Acceso de paquete: Se obtiene si no se especifica ningún otro nivel de acceso a los

miembros. Este nivel de acceso permite que las clases del mismo paquete que la clase tengan

acceso a los miembros. Este nivel de acceso asume que las clases del mismo paquete son

amigas de confianza. Este nivel de confianza es como la que extiende a sus mejores amigos y

que incluso no la tiene con su familia.

Subclases y la privacidad de métodos:

Un método puede ser sobrescrito por un método con un acceso diferente siguiendo algunas

reglas:
lOMoARcPSD|8831459

-Un método privado: puede ser sobrescrito por un método privado, por defecto, protegido o

público.

-Un método por defecto: puede ser sobrescrito por un método por defecto, protegido o

público.

-Un método protegido: puede ser sobrescrito por un método protegido o público. -

Un método público: solo puede ser sobrescrito por un método público.

Clases Abstractas:

Es una clase de la que no se pueden crear objetos, Su utilidad es permitir que otras clases

deriven de ella, proporcionándoles un marco o modelo que deben seguir y algunos métodos de

utilidad general.

Una clase abstract puede tener métodos declarados como abstract, en cuyo caso no se da

definición del método. Si una clase tiene algún método abstract es obligatorio que la clase sea

abstract. Como los métodos static no pueden ser redefinidos, un método abstract no puede ser

static.

Unidad 6.

Paquetes:

Un paquete de clases es un contenedor de clases, que se usa para agrupar clases que

consideramos se relacionada entre sí o tratan un tema común.

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Creación y uso de paquetes:

Se coloca al comiendo del archivo, con lo que indicamos que esta unidad de compilación es

parte de una librería.

Jerarquía de paquetes:

Se consigue especificando múltiples nombres en la sentencia package, separado por

puntos. Al importar un paquete no se importan los subpaquetes. Estos deben ser importados

explícitamente, pues en realidad son paquetes distintos.

Colecciones:

Framework:

Termino utilizado en POO para definir un conjunto de clases que define un diseño abstracto

para solucionar un conjunto de problemas relacionados.

¿Qué se define en un framework?

• Un conjunto de clases e interfaces (jButton, JTextField,…).

• Módulos de uso de la clase e interfaces.

• Módulos de funcionamiento del framework en tiempo de ejecución.

Ejemplo de framework:

• Swing : framework de interfaces gráficas de usuario

• Jakarta Struts : framework de aplicaciones web en Java

• JAI : framework para el procesamiento de imágenes en Java


lOMoARcPSD|8831459

Framework de colecciones:

Arquitectura unificada para representar y manipular colecciones independiente de los

detalles de representación

Colección: Es una agrupación de elementos.

Tipos:

• Acceso por posición: Lista, conjuntos, etc.  Acceso por clave: Diccionario.

Contenido un framework de colecciones:

• Interfaces : -TAD que definen la funcionalidad.

• Implementación : - Clases que implementan la interfaces de las colecciones.

-Un TAD puede tener más de una implementación.

• Algoritmos : -Métodos que realiza computaciones, como búsquedas u ordenaciones, sobre

objetos que implementan las interfaces.

Jerarquía de colecciones:

Colección: Secuencia de elementos individuales a los que se aplica una o más reglas.

List: Debe almacenar los elementos en la forma en la que fueron insertados.

Set: No puede tener elementos duplicados.

Queue: Ordena los elementos en orden FIFO.

Maps: Grupo de parejas de objetos clave-valor, que permiten efectuar búsqueda de valores.

No pueden tener claves duplicadas.

Sorted Map: Maps que mantiene la clave ordenada.

Hashing:

Muchas aplicaciones requieren un conjunto dinámico que soporte las operaciones de un

diccionario: insert, search, delete. Una opción sería usar un arreglo tan grande como el rango

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

de posibles claves. La desventaja es el espacio de memoria requerido en tal estrategia. Otra

opción es usar un arreglo menor, al cual podemos mapear las claves en uso. Esta función de

mapeo es la función hash. La tabla así organizada es la tabla hash.

El hashing utiliza una función para generar un código hash pseudo aleatorio a partir de la

clase del objeto y luego utiliza este código para indexar en la tabla hash.

TreeSet:

• Usa un árbol.

• Introduce un orden en los elementos, útil para reconocer el conjunto.  Los métodos

ADD, REMOVE y CONTAINS.

¿Qué ocurre cuando el árbol esta desbalanceado?

Utiliza un tipo de dato llamado árbol rojo-negro, que tiene la ventaja que si se desbalancea

luego de usar inserción o borrado de un elemento, siempre puede rebalancearse.

Genéricos:

Los genéricos implementan el concepto de tipos parametrizados, que permiten crear

componentes que resultan fáciles de utilizar con múltiples tipos. Genérico significa

“perteneciente o apropiado para grandes grupos de clases”. El concepto de genérico en

Java no posee el alcance general esperado como intención original de los genéricos en los

lenguajes de programación, que era “dotar al programador de la mayor capacidad expresiva


lOMoARcPSD|8831459

posible a la hora de escribir clases y métodos, relegando las restricciones que afectan a los

tipos con los que esas clases o métodos pueden funcionar”.

Excepciones:

Es una condición anormal que surge en una secuencia de código en el tiempo de ejecución.

Tipos:

• Error : Excepciones que indican problemas muy graves, que suelen ser no recuperables y no

deben casi nunca ser capturadas.

• Exception : Excepciones no definitivas, pero que se detectan fuera del tiempo de ejecución.

• Runtime Exception : Excepciones que se dan durante la ejecución del programa.

Los dos tipos principales:

• Runtime Exception : Errores del programador como división por cero o el acceso fuera de los

límites de su array.

• IOException : Errores que no puede evitar el programador, generalmente relacionados a la

entrada/salida del programa.

Sentencia TRY y CATCH:

Se utiliza para captar las excepciones.

Try {

//código que puede generar una excepción.

Catch (Tipo de excepción) {

//Código a ejecutar si se genera una excepción.

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Sentencia finally:

Define un bloque de código que queremos que siempre ejecute, ocurra o no una excepción.

Try {

//Código que puede generar una excepción.

Finally {

//Código a ejecutarse siempre.

Excepciones predefinidas:

ArithmeticException: Las excepciones aritméticas son generalmente el resultado de una

división por 0.

NullPointerException: Cuando se intenta acceder a una variable o método antes de ser

definido.

ClassCastException: El intento de castear un objeto a otra clase no valida.

OutOfMemoryException: Intento de crear un objeto con New y que no haya memoria.

Ventajas:

• Separación del código “Útil” del tratamiento de errores.

• Programación de errores a través de la pila de métodos.

• Agrupación y diferenciación de errores.

• Claridad del código y obligación del tratamiento de errores.

Diseño por contrato:


lOMoARcPSD|8831459

Puede ser visto como la aplicación a la construcción de software de los contratos que siguen

los asuntos de las personas. Cuando dos personas establecen un contrato se desprende de

este, las obligaciones y beneficios de cada una.

Da una visión de la construcción de sistemas como un conjunto de elementos de

software cooperando entre sí.

• Roles principales : Proveedores o cliente.

• Establece : Obligaciones y beneficios.

• Protege a ambas partes : Cliente y proveedores.  Condición : Principio de no clausulas

ocultas.

En el diseño por contrato se utilizan tres tipos de aserciones:

• Precondición : Expresa las restricciones bajo las que una rutina funcionara correctamente.

• Postcondicion : Expresa las propiedades del estado resultante de la ejecución de una rutina.

• Invariante : Expresan las propiedades globales de las instancias de una clase, que deben ser

preservadas por todas las rutinas.

Hilos:

Es un flujo secuencial simple dentro de un proceso. Es la unidad de código mas pequeña

que se puede relacionar.

Multitarea (basada en proceso):

Es la característica que permite al computador ejecutar dos o más programas concúrrete.

Multitarea (basada en hilos):

Un solo programa puede realizar dos o más tareas simultáneamente.

Downloaded by Mixel Javier Navarrete Vargas (mixel.navarrete@gmail.com)


lOMoARcPSD|8831459

Creación de un hilo en Java:

Hereda de la clase Java.Lang.Thread, sobrecargado el método run() de la clase.

Implementar la interface java.lang.runnable, la que declara el método run(); Luego se crea

un objeto de tipo THREAD pasándole por parámetro al constructor el objeto creado de la nueva

clase.

También podría gustarte