¿Sigue siendo relevante el modelado de objetos, o se ha reemplazado hoy solo con datos y algoritmos?

¿Qué significa “datos y algoritmos” en términos de modelar una solución de programación?

La solución a cualquier problema de programación debe modelarse de alguna manera . En el nivel más simple y básico, puede modelarlo como una serie muy larga de funciones y variables globales. Extremadamente desordenado por decir lo menos.

Cuando su aplicación crece a un tamaño considerable, ¿cómo va a modelar la solución? ¿Cómo vas a controlar la complejidad de la aplicación?

Una forma es ver la solución como datos que fluyen a través de una serie de funciones. Otra forma es ver la solución como entidades cooperantes que encapsulan datos y comportamiento. Puede haber otras formas, pero no son populares.

Así que no estoy seguro de qué alternativas al modelado de objetos está proponiendo.

Ver Pharo.

Ver en TRON y Steve Jobs y el software de Internet.

Ver ¿La programación funcional está superando a la industria de TI?

Me pregunto cómo se relacionan los objetos que no sean datos (miembros privados contenidos en instancias de clase) y algoritmos (el código en los métodos de las clases y la forma / orden en que los métodos llaman a los métodos de otras instancias de clase).

Para mí, la orientación de objetos (o el modelado de objetos, como lo llaman) es solo una forma de organizar conceptualmente sus datos y sus algoritmos.

Si tiene sentido para su dominio y es compatible con sus herramientas de desarrollo y ofrece la funcionalidad que necesita dentro de las necesidades de rendimiento que tiene, entonces utilícela por todos los medios. Entonces es relevante.

Si alguno de estos no es el caso, organice sus datos y algoritmos de manera diferente para satisfacer sus necesidades. En ese caso específico, la orientación a objetos podría no ser relevante.

La pregunta parece implicar que se trata de una elección universal y que, por cualquier razón “ahora”, ha habido un cambio en la utilidad universal de la vista de modelado de objetos para organizar datos y códigos, de modo que usted debería estar feliz de no volver a usarlos nunca más. .

No creo que este sea el caso, o nunca lo será.

Siempre tendremos datos y manipulación de datos con los que lidiar en el software, y siempre habrá diferentes formas de agrupar conceptualmente estas cosas, cada una con ventajas y desventajas. Nuevas formas pueden entrar en la mezcla, pero las viejas realmente no desaparecerán.

Sigue pensando y usa lo que creas que es mejor para tu situación actual. Siempre.

Comenzamos con datos y algoritmos. El modelado de dominios se volvió esencial ya que se requería computación digital para escalar a problemas más grandes y no solo matemáticos. OOP trajo un aumento masivo de la productividad.

El modelado de dominios nunca dejará de ser una necesidad. Pueden surgir mejores formas de hacerlo que OOP (eso espero) pero eso aún no ha sucedido.

El modelado de objetos ayuda a construir el diseño general de su aplicación. Las aplicaciones complejas cuando se manejan solo datos y algoritmos serán difíciles de mantener y solucionar problemas, y también muy difíciles de extender.

Por lo tanto, el uso de principios OO como principios SOLID, patrones de diseño (cuando corresponda) y algunos consejos de gurús como Martin Fowler, Tío Bob Martin, Kent Beck y otros lo ayudarán a crear aplicaciones que no son una pesadilla para mantener en el futuro. línea.

Volviendo a los datos y algoritmos: estas son partes de su diseño OO. Su diseño OO encapsulará datos que se convertirían en el estado de sus objetos y encapsularán algoritmos que se convertirán en el comportamiento de sus objetos. Entonces ambos van de la mano.

More Interesting

¿Qué harías? ¿Cuál hubiera sido tu estrategia si hubieras tenido la oportunidad de volver a comenzar la programación de aprendizaje?

¿Deberíamos memorizar algoritmos, o simplemente saber cómo implementarlos?

¿Por qué la complejidad del algoritmo O (logN) significa que los datos disminuyen a la mitad?

¿Cómo se puede explicar el algoritmo para la conversión de un número binario a un hexadecimal (código fuente incluido)?

Algoritmos: ¿Qué es el árbol utópico?

¿Cuánta competencia en la estructura de datos y el algoritmo es más que suficiente para ingresar a Google / Facebook y cuál debería ser la estrategia de 4 meses para aprenderlo?

¿Cuál es una explicación fácil de entender del algoritmo de Reddit?

¿Cuál es la forma más eficiente de ordenar un millón de enteros de 32 bits?

¿El hashing criptográfico es una buena manera de identificar imágenes de forma exclusiva?

¿Cómo se almacena una matriz bidimensional en la memoria?

Noto que las estructuras de datos son difíciles de entender y asimilar con solo leerlas. ¿Qué tengo que hacer?

Cómo verificar si la suma de los números de la primera mitad y la segunda mitad de una matriz es la misma

Cómo hacer un diagrama de flujo y un algoritmo para convertir números binarios a decimales

Cómo aprender estructuras de datos y algoritmos para empezar

Si U = {todos los enteros positivos menores o iguales a 30} y N = {todos los números impares menores o iguales a 19}, ¿qué es N 'y n (N')?