Ingeniería de software

Preguntas y respuestas para profesionales, académicos y estudiantes que trabajan dentro del ciclo de vida de desarrollo de sistemas




2
¿Por qué la clase base necesita tener un destructor virtual aquí si la clase derivada no asigna memoria dinámica sin procesar?
El siguiente código causa una pérdida de memoria: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < …

6
DDD cumple con OOP: ¿Cómo implementar un repositorio orientado a objetos?
Una implementación típica de un repositorio DDD no se ve muy OO, por ejemplo, un save()método: package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } Parte de infraestructura: package com.example.infrastructure; // imports... …


1
Usar clases de amigos para encapsular funciones de miembros privados en C ++: ¿buenas prácticas o abuso?
Entonces noté que es posible evitar poner funciones privadas en los encabezados haciendo algo como esto: // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == 5; // or …




4
estructura con valor predeterminado sin sentido
En mi sistema que con frecuencia operan con códigos de aeropuertos ( "YYZ", "LAX", "SFO", etc.), que siempre están en el mismo formato exacto (de 3 letras, representada en mayúsculas). El sistema generalmente maneja entre 25 y 50 de estos (diferentes) códigos por solicitud de API, con más de mil …

5
¿Tiene sentido definir una interfaz si ya tengo una clase abstracta?
Tengo una clase con alguna funcionalidad predeterminada / compartida. Yo uso abstract classpara ello: public interface ITypeNameMapper { string Map(TypeDefinition typeDefinition); } public abstract class TypeNameMapper : ITypeNameMapper { public virtual string Map(TypeDefinition typeDefinition) { if (typeDefinition is ClassDefinition classDefinition) { return Map(classDefinition); } ... throw new ArgumentOutOfRangeException(nameof(typeDefinition)); } protected …




Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.