Olvídate de los objetos y la programación por un minuto; en cambio piense en datos o información. Las preguntas con las que debe comenzar son:
- ¿Cuáles son las entidades en el sistema? (Por ejemplo: clientes, pedidos, productos, etc.)
- ¿Cuáles son las relaciones entre las entidades? (Por ejemplo: los clientes pueden estar asociados con cero o más pedidos; los pedidos pueden estar asociados con uno o más productos).
- ¿Cuáles son los atributos fundamentales de las entidades? (Por ejemplo: los clientes pueden tener un nombre, apellido, dirección y fecha de nacimiento).
- ¿Qué información derivada se requiere? (Por ejemplo: para cada cliente, se requieren sus atributos fundamentales junto con su edad actual en años y el saldo de la cuenta).
Tenga en cuenta la distinción importante entre los atributos fundamentales y los atributos derivados: la fecha de nacimiento (de un cliente) o la fecha de pedido (para un pedido) son fundamentales, mientras que la edad de un cliente o la edad de un pedido se derivan de atributos fundamentales. Es importante porque solo necesita registrar los atributos fundamentales; los derivados se pueden calcular según sea necesario (por definición). Si los atributos fundamentales cambian, los derivados se pueden volver a calcular según sea necesario.
Si tiene respuestas a estas preguntas, entonces ha comenzado (o completado) el modelado de su sistema. Si lo desea, puede documentarlo con un modelo de entidad-relación [1].
- ¿Qué puedo hacer como ingeniero de software para crear un entorno más sostenible para todos en la Tierra?
- ¿En qué debería estudiar y centrarme, inteligencia artificial, desarrollo de software o seguridad cibernética?
- ¿Cuál es la estructura de cualquier proyecto de software independientemente del idioma?
- ¿Tendría sentido nunca instalar ningún software que no sea de stock y también evitar Java y JavaScript tanto como sea posible para mejorar la seguridad informática?
- ¿Por qué no se actualizan automáticamente más programas como lo hace Google Chrome?
Después de completar el modelado del sistema, puede comenzar a pensar en cómo implementar el sistema. Si está utilizando un enfoque de procedimiento (en lugar de OO), normalmente crearía un módulo para cada entidad, y cada módulo exportaría una API para crear / acceder / actualizar los datos en el sistema. Por ejemplo, el módulo de clientes puede tener las siguientes funciones:
- clientes.crear (nombre, apellido, …) -> mango_cliente
- customers.get_first_name (customer_handle) -> first_name
- customers.set_first_name (customer_handle, first_name)
- customers.get_age (customer_handle) -> edad
- customers.set_date_of_birth (customer_handle, date_of_birth)
Tenga en cuenta que customer_handle podría ser un puntero a una estructura, o un identificador de enteros o lo que tenga sentido para su lenguaje e implementación en particular. Tenga en cuenta también que solo hay una función get_age, no set_age, porque la edad se deriva de date_of_birth.
Notas al pie
[1] Modelo de entidad-relación – Wikipedia