2009-12-13 11 views
7

Entiendo la programación de procedimientos (bueno, quién no) y quiero obtener una buena comprensión de OOP y después de eso funcional. Solo soy un aficionado, así que me llevará una edad y un día, pero es divertido.¿Cómo puedo mejorar mi programación orientada a objetos?

¿Alguien tiene alguna idea de lo que puedo hacer para ayudar? Ideas de proyecto? Ejemplo de código bien documentado eso es su?

Actualmente estoy usando C++, pero C# se ve mucho mejor para trabajar.

+2

¿El título es una pregunta o demanda?:) –

+0

+1 a jdk, editado para reflejar su observación =) –

+1

¡Lo siento! Eso me enseñará a no publicar después de un turno de 16 horas en el trabajo jajaja. – Silvanus

Respuesta

9

Hay algunos grandes libros de programación orientada a objetos La cabeza primero cubren Object-Oriented Analysis and Design y Object-Oriented Design Patterns.

+0

El mejor conjunto de libros de IMO para ayudar a actualizar los conceptos que difieren entre los idiomas. – Woot4Moo

+8

Excelentes como los libros, solo leer acerca de OOP en libros nunca te lo enseñará realmente. Realmente necesitas experiencia práctica. – Benson

+4

Algunas personas pueden no estar de acuerdo con la serie Head First porque parecen dirigidas a principiantes. Las personas con incluso un mínimo de experiencia parecen ofenderse cuando insinúas que un libro dirigido a novatos sería apropiado para ellos, pero si has llegado tan lejos como para aceptar que tienes más que aprender, estos libros de Head First son "impresionantes". Dan ejemplos concretos y establecen los principios de manera clara y concisa. – RibaldEddie

4

Para realmente sentirse cómodo con la programación orientada a objetos, hay un par de cosas que puede hacer.

  1. Oprima para modelar un problema del mundo real con los objetos. Crea clases para representar los objetos y métodos para representar cosas que pueden hacer.

  2. Utilice un lenguaje y/o un marco que realmente fuerce OOP en usted. No fue hasta que tomé una clase de Java y empecé a usar Swing en gran medida que realmente asimilé OOP. No he jugado mucho con C# recientemente, pero creo que C o Java serían una buena forma de hacerlo.

0

Depende de los idiomas que conozca. Personalmente, recomendaría algún tipo de lenguaje de scripts OO. IE PHP o Python, creo que esto te ayudará a hacer la transición sin problemas.

+2

Estoy totalmente en desacuerdo. Tanto PHP como Python tienen sistemas de objetos muy extraños. Python es amable, pero hace un trabajo muy pobre en herencia, y requiere el parámetro explícito "self", que puede ser confuso. El sistema de objetos de PHP está bien, pero tiene bastantes rarezas como resultado del patrimonio limitado de PHP. Ruby, por otro lado, tiene un gran sistema de objetos y podría ser una buena opción. – Benson

+0

Hmm Tendría que echarle un vistazo a Ruby, y sí, estoy de acuerdo en que Python tiene una manera única de manejar las cosas. La mayoría de los programadores de procedimientos continuarán escribiendo su código de esa manera, incluso si está en OO land. Gracias por la sugerencia de Ruby sin embargo. – Woot4Moo

1

¡He convertido recientemente de PHP a C# y me encanta cada minuto! Diría que encuentras un nuevo proyecto con una línea de tiempo flexible y simplemente te sumerges. Consigue también un par de libros, especialmente sobre conceptos de OOP y patrones de diseño.

5

Te recomiendo que leas Object Thinking por David West. Hay muy poco código en el libro, pero se habla mucho sobre cómo modelar.

Un par de cosas que me gustaría que alguien me hubiera dicho cuando yo estaba empezando a cabo son:

  1. Al modelar objetos, usted debe centrarse en los comportamientos más que la forma de los datos.
  2. Aunque muchos tutoriales de OO modelan cosas del mundo real, como animales y vehículos, muchas de las cosas que modelamos en el software OO son conceptos y construcciones (cosas que no tienen representación física en el mundo real).
6

me gustaría recomendar que trabajan principalmente con un lenguaje fuertemente tipado como C# o Java, como muchos de los patrones de diseño y programación orientada a objetos principios generales están orientados a la tipificación fuerte (GOF, Refactoring, Uncle Bob). Ruby es maravilloso, pero muchos principios de OOP comunes, como la codificación de interfaces, no se aplicarán.

Dedica algo de tiempo a los principios del tío Bob SOLID. Ve despacio, prestando particular atención a la Responsabilidad Individual. Si no obtienes nada más del Tío Bob, obtén SRP en tu cabeza y aplícala temprano y con frecuencia.

También me gusta la idea del tío Bob de códigos katas. Recomiendo trabajar a través del bowling game kata.

2

Intente aprender Smalltalk - la mejor manera de mejorar su programación OO.

2

Después de obtener una idea básica de los fundamentos, la mejor manera es aprender con el ejemplo. Descargue proyectos populares de código abierto y explore su camino a través de ellos. Algunos proyectos que he aprendido mucho de:

0

Creo que se puede hacer investigación sobre Test Driven Development. Esto te orienta automáticamente obedeciendo las reglas de los Principios Orientados a Objetos. Esta es la manera práctica, pero funciona. También puede apoyar este proceso con el aprendizaje de problemas teóricos, como los principios SÓLIDOS y los patrones de diseño. Leer el código fuente de grandes proyectos es también una buena idea para mejorar sus habilidades de orientación a objetos

0

Un consejo deseo había sido dado a mí hace mucho tiempo es:

No se exceda en el uso herencia.

Este es un escollo realmente fácil para un principiante (imho) ya que es uno de los grandes conceptos en OOP del que todos hablan.

Básicamente, debe usar la herencia solo donde realmente tiene sentido - piense en tipos de datos, algunas jerarquías de widgets, cosas donde la relación es tan obvia que cualquiera la hubiera usado. De lo contrario, deberías estar inyectando objetos en otros y llamándolos para cambiar la funcionalidad (composición).

No se sienta tentado a definir una carga de métodos abstractos y anular varias veces para implementarlos de manera diferente cuando podría tener una sola clase e inyectar (argumento al constructor) un objeto que implementa una interfaz que llama para hacer cualquier variable funcionalidad que de otro modo habrías puesto en los métodos abstractos. Esto conducirá a un código mucho más simple y más reutilizable (en mi experiencia), y también más comprobable.

0

Para dominar sus habilidades orientadas a objetos necesita mucha práctica.

Trata de pensar en "términos objeto" para todo lo que haces con el código.

Aplícalo:

  • en su lenguaje de servidor
  • mantener su objeto de código Java Script orientado
  • pensar en mantener su código CSS fácilmente reutilizable y contiene bajo la duplicidad.
Cuestiones relacionadas