Articles of oop

Progtwigción orientada a objetos en Haskell

Estoy tratando de comprender la progtwigción de estilo orientado a objetos en Haskell, sabiendo que las cosas van a ser un poco diferentes debido a la falta de mutabilidad. He jugado con clases de tipo, pero mi comprensión de ellas está limitada a ellas como interfaces. Así que he codificado un ejemplo de C ++, […]

Diferencia de clases de manejo y valores

Tengo algunos antecedentes C ++ y quiero usar clases en Matlab. ¿Cuál es la diferencia entre un mango y una clase de valor? Sé que usaría una clase de valor si quisiera definir una clase de matriz con operadores sobrecargados como “+” y “*”. Sin embargo, a veces parece que las cosas solo funcionan para […]

Las declaraciones de cambio son malas?

Recientemente descubrí que las declaraciones de cambio son malas en OOP, particularmente de “Código limpio” (p37-39) de Robert Martin. Pero considere esta escena: estoy escribiendo un servidor del juego, recibiendo mensajes de los clientes, que contienen un número entero que indica la acción del jugador, como mover, atacar, elegir un elemento … etc., habrá más […]

Doctrine2 ORM no guarda los cambios en un campo DateTime

Tengo una entidad de usuario: use Doctrine\ORM\Mapping as ORM; /** * ExampleBundle\Entity\User * * @ORM\Entity() */ class User { // … /** * @ORM\Column(type=”service_expires_at”, type=”date”, nullable=true) */ private $service_expires_at; public function getServiceExpiresAt() { return $this->service_expires_at; } public function setServiceExpiresAt(\DateTime $service_expires_at) { $this->service_expires_at = $service_expires_at; } } Cuando actualizo service_expires_at del usuario como sigue, el valor […]

¿Por qué no puedo declarar que los métodos de C # son virtuales y estáticos?

Tengo una clase auxiliar que es solo un montón de métodos estáticos y me gustaría crear una subclase de la clase auxiliar. Algunos comportamientos son únicos dependiendo de la subclase, por lo que me gustaría llamar a un método virtual desde la clase base, pero como todos los métodos son estáticos, no puedo crear un […]

¿Por qué no hay contra-varianza de parámetros para anular?

C ++ y Java son compatibles con la covarianza de retorno cuando se reemplazan los métodos. Sin embargo, ninguno de los dos admite la contra-varianza en los tipos de parámetros; en cambio, se traduce en sobrecarga (Java) u ocultación (C ++). ¿Por qué es eso ? Me parece que no hay daño en permitir eso. […]

¿Debo usar propiedades o referencia directa cuando acceda a variables de instancia internamente?

Digamos que tengo una clase como esta: @interface MyAwesomeClass : NSObject { @private NSString *thing1; NSString *thing2; } @property (retain) NSString *thing1; @property (retain) NSString *thing2; @end @implementation MyAwesomeClass @synthesize thing1, thing1; @end Al acceder a thing1 y thing2 internamente (es decir, dentro de la implementación de MyAwesomeClass ), es mejor usar la propiedad, o […]

¿Podemos instanciar una clase abstracta?

He leído que solo podemos instanciar una clase abstracta al heredarla, pero no podemos crear una instancia directamente. Sin embargo, vi que podemos crear un objeto con el tipo de una clase abstracta llamando a un método de otra clase. Por ejemplo, LocationProvider es una clase abstracta y podemos instanciarla llamando a la función getProvider() […]

¿Es una mala práctica para una clase tener solo campos y métodos estáticos?

Tengo una clase que consiste solo en variables miembro estáticas y métodos estáticos. Básicamente, sirve como una clase de utilidad de propósito general. ¿Es una mala práctica para una clase contener solo variables de miembros estáticos y métodos estáticos?

¿Cuál es la diferencia entre la relación Composición y Asociación?

En OOP, ¿cuál es la diferencia entre la composición (denotada por el diamante relleno en UML) y la relación de asociación (denotada por el diamante vacío en UML) entre las clases. Estoy un poco confundido. ¿Qué es la agregación? ¿Puedo tener un ejemplo convincente del mundo real?