jueves, 30 de septiembre de 2010

Chapter 3: Object-Oriented Design

PREGUNTAS

2.- ¿Cuáles son las principales diferencias entre programación a lo pequeño y programación a lo grande?

Programando a lo pequeño el código es desarrollado por un programador o por un grupo pequeño de programadores.
Programando a lo grande, el software del sistema es desarrollado por equipo grande de personas y cada uno de ellos tiene una tarea a realizar.


4.- ¿Qué es un escenario?

Es algo que crea el equipo de trabajo con el objetivo de descubrir el comportamiento del sistema por si se han de realizar cambios pequeños o grandes en el código.


5.- ¿Cuáles son los elementos básicos de un componente?

Un componente es una entidad abstracta que realiza tareas, es decir, cumple con ciertas responsabilidades.
Un componente puede convertirse en una función, una estructura de clase o una colección de otros componentes.

Debe ser pequeño y bien definido en lo que corresponde a sus responsabilidades a realizar.
Debe de interactuar en lo más mínimo posible con otros componentes.


6.- ¿Qué es una carta CRC? ¿Qué significan las siglas?

CRC (Componente, Responsabilidad, Colaborador) es una carta en donde se escribe el nombre del componente, sus responsabilidades y los nombres de otros componentes con los cuales este interactúa. Si se asignan o se descubren más responsabilidades del componente, estas se agregan a la carta CRC.


7.- ¿Qué es el ciclo qué / quién?

Es un ciclo en donde primero el equipo de diseño identifica qué actividades deben ser desarrolladas en seguida. Inmediatamente a esto se contesta la pregunta de quién desarrollará esa acción.


8.- ¿Por qué el manual de usuario debe de realizarse antes de empezar el código?

Porque el manual de usuario describe la interacción del sistema con el punto de vista del usuario, y con esto, al equipo de desarrollo de software le es más fácil entender los requerimientos del usuario.


10.- ¿Qué información es transmitida por un diagrama de interacción?

Las relaciones dinámicas durante la ejecución de un escenario.


11.- ¿Cuáles son los principios de Parnas?

- El desarrollador de un componente de software debe proporcionar al usuario con toda la información necesaria para ser efectivo el uso de los servicios prestados por el componente y no debe de proporcionar ninguna otra información.

- El desarrollador de un componente de software debe proporcionar toda la información necesaria para llevar a cabo las responsabilidades que se asignaron al componente y no debe de proveer ninguna otra información.


12.- ¿Por qué la selección de buenos nombres es un aspecto importante para el diseño de software con éxito? ¿Cuáles son algunas pautas para elegir los nombres?

Es importante porque hay que asociar el nombre con la tarea que se esté desarrollando.

Algunas de las pautas para elegir nombres son:

- Utilizar nombres pronunciables fácilmente.
- Utilizar una mayúscula para indicar que empieza otra palabra si se omitirán espacios.
- Tener cuidados con las abreviaciones.
- Evitar nombres con diferentes interpretaciones.


13.- ¿Qué es la prueba de integración?

Consiste en realizar pruebas para verificar que un gran conjunto de partes de software funcionan juntos.


14.- ¿Qué es el mantenimiento del software?

Es el proceso de mejora y optimización del software después de su entrega al usuario final (es decir; revisión del programa), así como también corrección y prevención de los defectos.


...

Chapter 2: Abstraction

PREGUNTAS

1.- ¿Qué es la abstracción?

Es cuando se suprime o se ocultan, algunos detalles de un proceso o artefacto, con el fin de poner de manifiesto con mayor claridad otros aspectos, detalles o estructura.


3.- ¿Qué es el ocultamiento de información?

Es la omisión deliberada de información en el desarrollo de una representación abstracta.


5.- ¿Cuáles son las capas de abstracción que se encuentran en un programa orientado a objetos?

Especialización, División en partes y Múltiples vistas.


6.- ¿Qué significan los términos de cliente y servidor cuando son aplicados a un programa simple orientado a objetos?

El término servidor significa simplemente un objeto que está prestando un servicio. Las dos capas de abstracción se refieren a los dos puntos de vista de esta relación, la vista desde el lado del cliente y la vista desde el lado del servidor.


7.- ¿Cuál es la diferencia entre una interfaz y una implementación?

Una interfaz describe lo que el sistema está diseñado para hacer, es el punto de vista exterior.
La implementación describe cómo se debe de realizar la tarea asignada, es el punto de vista interior.


8.- ¿Cómo el énfasis en encapsulación y la identificación de interfaces facilita el intercambio?

Dividiendo un sistema en partes, ya que el objetivo deseable es que la interacción entre las partes se mantenga al mínimo.
Un paso clave en la creación de grandes sistemas es la división en componentes.


9.- ¿Cuáles son las características básicas de la composición como una técnica para crear sistemas complejos de partes simples?

Comenzar con pocas formas primitivas, y añadir reglas para combinar formas para crear nuevas formas. La idea clave en la composición es permitir que el mecanismo de combinación sea utilizado tanto en las nuevas formas, así como las formas primitivas originales.

11.- ¿Qué motiva a la colección de patrones de software?

Documentar las soluciones a los problemas ayuda para que en problemas futuros, estos puedan ser más fáciles de manejar de manera similar.


12.- ¿Qué idea clave se realizó por primera vez por el desarrollo de procedimientos como una abstracción de programación?

La programación utilizando módulos.


13.- ¿Cuáles son las características básicas de un módulo?

Tamaño pequeño.- Facilita aislar el impacto que pueda tener la realización de un cambio en el programa, para corregir un error, o por un rediseño del algoritmo correspondiente.

Independencia modular.- Cuanto más independientes son los módulos entre sí más fácilmente se trabajará con ellos, esto implica que para desarrollar un módulo no es necesario conocer detalles internos de otros módulos. Como consecuencia de la independencia modular un módulo cumplirá con:

- Abstracción.
- Aislamiento de los detalles mediante encapsulamiento.




...

miércoles, 29 de septiembre de 2010

Semana 1 - Chapter 1: Thinking Object-Oriented

PREGUNTAS

1.- ¿Cuál es el significado original del término paradigma?

Procede del griego paradeigma que significa modelo o ejemplo. Es una lista de todas las formas flexivas que una palabra puede tomar para ilustrar un ejemplo de la conjugación o declinación a la que pertenece.


2.- ¿Cómo interactúan los objetos entre sí?

Interactúan entre ellos haciendo peticiones mediante mensajes.

Se transmite un mensaje a un agente (un objeto) responsable de la acción. El mensaje codifica la solicitud de la acción y se acompaña de toda la información adicional (argumentos) necesarios para realizar la solicitud. El receptor es el objeto al que se envía el mensaje. Si el receptor acepta el mensaje, acepta la responsabilidad de llevar a cabo la acción indicada. En respuesta al mensaje, el receptor llevará a cabo algún método para satisfacer la solicitud.


3.- ¿Cuál es la diferencia entre mensajes y llamada a procedimiento?

Una diferencia es que en los mensajes, hay un receptor designado para ese mensaje, el cual es un objeto a quien se le envió el mensaje. En la llamada a procedimiento no hay un receptor designado.

Otra diferencia es que la interpretación del mensaje está determinada por el receptor y puede variar con diferentes receptores.


4.- ¿Cuál es el nombre que se da para describir un algoritmo que utiliza un objeto para responder a una solicitud?

Los métodos de interpretación del mensaje.


5.- ¿Por qué el enfoque orientado a objetos, naturalmente, implica un alto grado de ocultar la información?

Porque protege las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas.


6.- ¿Qué es una clase? ¿Cómo son las clases relacionadas con su comportamiento?

Una clase representa simplemente una agrupación de objetos similares, tales como números enteros o listas. Es una construcción que se utiliza como un modelo (o plantilla) para crear objetos de esa clase.

La clase es el repositorio de comportamiento asociado con un objeto. Es decir, todos los objetos que son instancias de la misma clase pueden realizar las mismas acciones.


7.- ¿Qué es una jerarquía de herencia de clases? ¿Cómo se vincula a las clases y a su comportamiento?

Es donde las clases se organizan en una estructura de árbol de raíz única.

La memoria y el comportamiento asociado a las instancias de una clase están automáticamente disponibles a cualquier clase asociada a una descendiente de esta estructura de árbol.

________________________________________

EJERCICIOS

2.- Busque la definición de paradigma en al menos tres fuentes bibliográficas. Y relaciona estas definiciones con lenguajes de programación.

·          Es un modelo o patrón en cualquier disciplina científica u otro contexto científico.
·          Palabra que se usa para denominar elementos que siguen algún diseño o modelo.
·          En programación: representa el enfoque particular o filosofía para la construcción del software en un lenguaje.

Estas definiciones se relacionan con los lenguajes de programación ya que estos se utilizan para que en ellos se escriban las instrucciones de manera lógica que se deben de llevar a cabo para la ejecución de una tarea en particular.


3.- Toma un problema de la vida real, y describe su solución en términos de agentes (objetos) y sus responsabilidades.

Un estudiante de preparatoria no acredita una de sus materias y presentará para su segunda oportunidad.

AGENTES:

* Alumno
* Maestro
* Jefe de academia
* Secretario en turno
* Cajero
* Secretaria


RESPONSABILIDADES:

* Alumno:
- Pagar el costo del examen de segunda oportunidad.
- Estudiar el contenido del temario para el examen.
- Presentarse el día y la hora señalada para presentar.

* Maestro:
- Realizar el examen de segunda oportunidad.
- Revisar el examen de segunda oportunidad contestado por el alumno.
- Entregar al secretario en turno los resultados del examen de segunda oportunidad.

* Jefe de academia:
- Verificar que el examen que haya realizado el maestro cumpla con lo establecido de temario y ortografía y gramática.
- En caso de que el maestro no haya realizado el examen, el jefe de academia lo realiza.

* Secretario en turno:
- Recibe el examen de segunda oportunidad para después aplicarse.
- Recibe las calificaciones de los exámenes realizadas por el maestro que los revisó.
- Entrega a la secretaria del departamento de escolar y archivo los resultados de los alumnos para su captura en kardex.

* Cajero:
- Cobra al alumno el pago del examen de segunda oportunidad.

* Secretaria:
- Captura los resultados de segunda oportunidad de los alumnos a sus respectivos kardex.

Introducción

UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN
FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA





Programación Orientada a Objetos
Dra. Elisa Schaeffer





Alumna:
Cecilia Sánchez Alanís

San Nicolas de los Garza, N.L.

...