2008-09-12 15 views
68

¿Cuál es un buen desafío para mejorar sus habilidades en programación orientada a objetos?Buenos desafíos/tareas/ejercicios para aprender o mejorar las habilidades de programación orientada a objetos (OOP)

La idea detrás de esta encuesta es proporcionar una idea de qué ejercicios son útiles para aprender OOP.

El desafío debe ser lo más independiente del idioma posible, ya sea que requiera poco o ningún uso de bibliotecas específicas o solo las bibliotecas más comunes. Intente incluir solo un desafío por respuesta, de modo que un voto corresponda únicamente a los méritos de ese desafío. También sería bueno si se indica un nivel de habilidad requerida, y también la razón de por qué es un ejercicio útil.

Las soluciones a los desafíos podrían publicarse como respuestas a una pregunta de "Cómo ..." y enlazadas desde aquí.

Por ejemplo:

  • Challenge - implementar un último en entrar, primero en salir pila
  • nivel
  • Habilidad - principiante
  • Justificación - da la experiencia de cómo hacer referencia a objetos

Respuesta

39

Building Skills in Object-Oriented Design es un libro gratis que puede ser de utilidad. La descripción es la siguiente

"El objetivo de este libro es ayudar al diseñador principiante dándoles una secuencia de ejercicios interesantes y moderadamente complejos en el diseño OO. Este libro también puede ayudar a los gerentes a desarrollar un nivel de comodidad con el proceso de desarrollo de software de OO. Las aplicaciones que crearemos son un paso por encima de lo trivial, y requerirán un poco de pensamiento y diseño cuidadoso. Además, debido a que las aplicaciones son principalmente recreativas por naturaleza, son interesantes y atractivas. Este libro permite al lector explorar los procesos y artefactos del diseño de OO antes de los plazos del proyecto hacen que un buen diseño parezca imposible ".

+1

En segundo lugar esto - realmente buen libro. –

1

Ciertamente, un buen desafío, aunque menos accesible que una asignación de "comenzar desde cero", es refactorizar algún código existente que no usa la herencia o que no usa mucho para hacer una mayor uso de la herencia El proceso de refactorización expondrá muchos de los beneficios y errores de oop, como sin duda tiene para mí en mi proyecto más reciente. También me impulsó a comprender los conceptos mejor que los proyectos anteriores donde creé mis propios diseños orientados a objetos.

8

Desafío: escriba un contenedor para su API de sitio/servicio web de su elección en el idioma de su elección, que no exista (por ejemplo, un contenedor ZenDesk API escrito en C#). Libere el envoltorio como fuente abierta para que otros lo usen.

Grado de Dificultad: Principiante a Intermedio

Justificación: Para aprender cómo extrapolar una tercera parte de la API de servicios web en un conjunto significativo de objetos/clases, por lo que la reutilización de esa API más fácil en el idioma elegido.

4

Después de haber aprendido los conceptos básicos, estudie el libro de patrones de diseño "Banda de cuatro".

http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1221488916&sr=8-1

Este es un clásico, y una lectura obligada para cualquier desarrollador que quiera entender cómo utilizar OO para diseñar soluciones elegantes a problemas comunes de codificación.

+5

Con todo el respeto debido al GOF, "La cabeza en patrones de diseño" es una lectura mucho más agradable. – CaptainHastings

+2

GOF es lo máximo y no debemos temer por eso. Léelo todos los días antes de irte a dormir. – kta

0

Una tarea determinada tiene muy poco que ver con ser "OOP", se trata más de cómo la califica.

Me gustaría ver el libro de Refactorización, capítulo 3, y asegurarme de que ninguno de los malos olores de código existe en la solución. O, lo que es más importante, repase los que se aplican.

Lo más importante es observar la existencia de setters y getters (lo que indica que está operando con valores de una clase y no pedirle a la clase que opere con sus propios valores) o usar "extends" sin aplicar la sustitución Liskov Principio, cosas así.

3

Tome una pieza escrita de código de procedimiento y trate de transformarla en una solución basada en OOP. Durante el proceso, consulte un libro sobre refactorización y patrones de diseño. Un amigo mío fue capaz de dar un gran paso adelante en la comprensión de conceptos orientados a objetos exactamente de esta manera. Como con cualquier cosa, esto podría no funcionar para todos.

2

He encontrado CRC cards para ser bastante eficaz en el aprendizaje, la enseñanza y la construcción de un buen diseño OO.

13

Escriba un programa desafiante desde cero. Trate de que algunas personas (alrededor de cinco, eso debería ser factible) lo usen. Responda a sus solicitudes de cambio.

Adapte el diseño de su programa. Comience poco a poco, luego mírelo crecer. Administrar este crecimiento Esto es difícil. También tendrás que corregir errores y mantener el problema a lo largo del tiempo, lo que para mí fue una lección muy valiosa.

+5

+1 ** Responde a sus solicitudes de cambio ** –

Cuestiones relacionadas