Questions tagged [object-oriented]
A methodology that enables a system to be modeled as a set of objects that can be controlled and manipulated in a modular manner
3,433 questions
0
votes
2
answers
111
views
Should I instantiate controllers in route modules or use static methods?
I’m building a modular REST API using Node.js + Express + TypeScript.
My controllers are defined as classes. In my route files, I currently create a new controller instance, like this:
import { Router ...
0
votes
2
answers
185
views
How to reduce the number of class instances passed to the __init__() method of a Python class?
I have a Python class called FunctionsManager; its __init__() method is the following:
class FunctionsManager:
def __init__(self, instance_class1, instance_class2, ..., instance_classN):
...
2
votes
1
answer
256
views
Is it okay to mix OOP and modular approaches when building a backend with TypeScript/JavaScript?
I’m designing a backend in TypeScript (could also apply to JavaScript), and I’m wondering about the architectural approach.
Is it better to stick to a single paradigm (e.g., fully object-oriented or ...
1
vote
1
answer
251
views
OO design - Process that relies on the current state of objects
We have a CAD software extension, where you can draw products like walls, doors, windows, etc., and you can export the drawing as an order, which contains the parts and costs.
As part of this export, ...
2
votes
3
answers
636
views
Convenience inheritance
Sometimes, you inherit from a class that defines the semantics of your type (Shape – Ellipse – Circle). Other times, you inherit simply because it's convenient to do so.
A superclass may have ...
-1
votes
1
answer
137
views
How to organize struct-based "methods" in C similar to object-oriented style? [closed]
So I was coding in C for a while now, getting used to language syntax and different styles.
Implemented a couple of simple data structures, algorithms and tried my skills in making Minesweeper clone.
...
5
votes
3
answers
664
views
How to get rid of Mappers and make objects build themselves?
I am having a really hard time deciding where to instantiate my entities in the refactoring I am making. The project was built with DDD and it's layered: it has the infra, domain and app layers. In ...
3
votes
6
answers
602
views
Is OOP really beneficial for enterprise-scale business software compared to procedural languages like ABAP or COBOL?
I'm currently drafting a Python coding standard for internal enterprise use, primarily targeting business applications that involve heavy data access, reporting, and transactional logic.
In this ...
0
votes
2
answers
376
views
Global State, How To Do IT?
im kind of a newbie so take me easy
i face a problem every time i make a project
specially Client projects, which is Global State i always struggle to do it
for example, here is the structure of one ...
4
votes
2
answers
2k
views
Should I expose an instance's state with methods?
I've read somewhere about a pattern that is as follows: if it'll change the state of the instance, the method should be named with a verb and return void; and if the method just returns something (...
0
votes
2
answers
156
views
Is it better to pass a specific “context” object to handlers rather than the entire domain object?
I’m designing a system where various “handlers” apply business rules to an object. Initially I had each handler receive the full domain object:
// A large domain object with many properties and ...
1
vote
1
answer
119
views
When does encapsulating a primitive field into its own class make sense? [duplicate]
Let's say I have the following Java code:
public record Person(String firtName, String lastName, int age) {}
Can it makes sense to have instead:
public record Person(FirstName firtName, LastName ...
3
votes
2
answers
264
views
How to structuring a read/write submodule in OOP Python
I am developing a python package that needs to be able to read/write from/to multiple formats. E.g. foo format and bar format. I am trying to contain the functions relating to each format in a single ...
3
votes
7
answers
555
views
Do I need to create an interface for every service class to follow good design principles?
I'm working on a custom Magento 2 module in my internship, and I'm trying to follow SOLID principles in my code.
Right now, my controller actions handle everything: getting request data, processing it,...
2
votes
2
answers
242
views
Best way to add asynchronous execution for already implemented synchronous process
I have a complex process implemented in Java Spring microservice.
Currently this process is triggered on user request and it is synchronously executed.
This often results in a gateway timeout.
...
6
votes
7
answers
720
views
Why do "protected variables" tend to violate open closed principle?
According to Why is Clean Code suggesting avoiding protected variables?, I know there are tons of reasons to avoid protected variables.
However, there is a reason at the currently highest voted answer ...
8
votes
5
answers
4k
views
Is it still a code smell if a class knows all subtypes but not using instanceof and downcasting?
According to Instanceof code smell, I know using "instanceof" is a code smell, so suppose there is a game with some Tools:
Tool.java:
public interface Tool{
public void printInfo();
}
...
2
votes
1
answer
233
views
Extracting type info
Suppose that I want to implement the following scenario.
There is a board and each board has a set of peripherals like leds, temp sensors, gpio and so on. Each of them implements the according C++ ...
3
votes
1
answer
241
views
Passing info between different branches of a class hierarchy in C++?
So, I have a class hierarchy that looks like this:
It is an embedded project, so the entire code will be run over and over.
I have several algorithm classes, that compute some result given some inputs....
4
votes
1
answer
297
views
Refactoring a codebase from manual memory management to RAII
Edit: @Ben Cottrell's comment said this was similar to a question about spaghetti code. While both questions involve large codebases, mine addresses a specific technical pattern: manual memory ...
13
votes
13
answers
3k
views
Should setters silently sanitize input — or should they just throw? [closed]
Suppose the code's inside some FullName class
And suppose I want only capitalized name elements (let's ignore the fact that in some cultures, name elements may start with a lower-case letter)
Should I ...
1
vote
3
answers
507
views
C# var vs. interface vs. concrete class in object instantiation
As we know, there are (at least) four ways to instantiate a class object in C#. But I've never quite understood why some ways are better than others.
First of all, you can explicitly declare the ...
0
votes
0
answers
107
views
Fix cyclic dependency between protocol and business classes
I'm designing a library for CANopen protocol. The basic CANopen frames are PDO and SDO, where PDO is like UDP (fire and forget) and SDO is like HTTP (request and response). A CANopen device is a PDO ...
2
votes
1
answer
200
views
Is widening parameter types in a PHP interface implementation a good practice?
I have an interface defined as follows:
interface MyInterface
{
public function setMyMethod(int $a);
public function getMyMethod(): int;
}
And I have a class that widens the parameter type:
...
2
votes
3
answers
324
views
How do I model this scenario so that it adheres to OOP principles?
I have a Slide class with subclasses referring to the different types of slides (IntroSlide, SummarySlide, etc.):
abstract class Slide {
String slideType;
final String title;
final String ...
17
votes
5
answers
3k
views
Should parameter names describe their object type?
I'm unsure whether parameter names should describe their object types or if shorter, more concise names are preferable.
Consider the following two method signatures:
public void PrintPoint(...
3
votes
3
answers
1k
views
Should business logic classes be POJO only?
I read about three-tier architecture and I have a question: I read that in business logic (that is, what is in logic tier) there should be POJO classes, but in most Spring manuals these classes are ...
2
votes
4
answers
477
views
Is casting a concrete type to an interface and using it if it successful bad practice?
I recently came across some code:
val, ok := i.(SomeInterface)
if ok {
val.Method()
}
The above is Go, and attempts to cast to an interface and then runs the method for that interface against the ...
2
votes
3
answers
433
views
What is the relationship between the terms "association", "aggregation", and "composition"?
I try to brush up on my technical interview skills as I plan to seek a better offer
I don't recall being ever asked that really, but I still want to clear up any confusion. What is association, ...
0
votes
3
answers
491
views
Do I really need this many (DTO) types for mapping a simple object to CRUD & database?
Say I'm building my own backend framework (really I'm just learning) and I have a simple class:
class User {
String email
String passwordHash
Date birthdate
Int getAge() {
...
4
votes
5
answers
498
views
Anemic Models vs. Rich Models: When to Use?
I'm working on an application and have encountered two different approaches for organizing business logic. There's a general consensus that application rules should be handled in higher layers, so I ...
0
votes
1
answer
140
views
Which approach do I choose for representing objects and scenes in my 3D drawing library?
I'm creating my own drawing library in C++ to provide shared rendering code for my projects.
Since the library is designed to be used as a component of other projects, the renderer's representation of ...
-5
votes
3
answers
262
views
Java OOP problem [closed]
I'm working on a Java programming assignment. In this assignment, there's an immutable class Book and a mutable class BookCopy. You can have multiple BookCopy of the same Book.
Now here comes the ...
1
vote
1
answer
359
views
Separation of concerns between business layer, data layer and presentation layer without losing information
I'm developing an api in Fast API using sqlalchemy to manage my ORM classes and operations with the database.
I'm dealing with some design decisions to have my classes as little coupled as possible ...
0
votes
1
answer
102
views
Should domain logic reside inside or outside associated classes?
I have a question on where to put the logic in the following hypothetical:
There's this class that, at it's basis, has an int[]. There's a method that takes the int[]s of two of these classes and ...
2
votes
3
answers
271
views
"use auto" and "declare most abstract type", which guideline has higher priority?
According to Why define a Java object using interface (e.g. Map) rather than implementation (HashMap), I know I should declare most abstract type when possible, for example, suppose I'm using an UI ...
1
vote
2
answers
299
views
OOP Design of a Mathematical Group
A Group is formally defined as a set of Element's,
over which a single operator mul is defined.
There are different kinds of Groups,
and each kind requires a different set of parameters.
Operator mul ...
3
votes
5
answers
811
views
Why is "dependency injection" ok, but not "the opposite of preserve whole object (pass required parameters only)"?
According to Why should I use dependency injection?, "dependency injection" has some advantages, for example:
"Non dependency injection" version:
public class Client{
private ...
0
votes
0
answers
221
views
Is "parallel composition hierarchies" a code smell?
For example, suppose I have a mobile app that uses some user data, the DTO:
class UserData{
public:
Address address;
bool isVerified=false;
};
class Address{
};
The UserData may be loaded from ...
5
votes
11
answers
2k
views
In "avoid primitive obsession", what is the meaning of "make the domain model more explicit"?
According to When is primitive obsession not a code smell? and answer in https://softwareengineering.stackexchange.com/a/365205, I know one of the advantages of avoiding primitive obsession is "...
12
votes
5
answers
4k
views
Why is "hidden dependency" (required things not in parameter list directly) a disadvantage of "global variables", but not in "preserve whole object"?
According to https://softwareengineering.stackexchange.com/a/200092, as I know, "preserve whole object" is a refactor method that passes the whole object instead of required parameters only, ...
1
vote
3
answers
268
views
In "Liskov Substitution Principle", is "invariants can't be weakened in a subtype" a kind of "postconditions can't be weakened in a subtype"?
According to Invariant rule in Liskov Substitution Principle, I know one of the form of violation of "Liskov Substitution Principle" is violating "invariants can't be weakened in a ...
7
votes
8
answers
5k
views
Is "avoid extra null pointer risk" a reason to avoid "introduce parameter objects"?
According to Should we avoid custom objects as parameters?, I know I can group related parameters to improve readability of the function, eg:
Original version:
public void showSchedule(long startDate,...
1
vote
1
answer
379
views
Mapping complex objects to other similar complex objects
I am working on two applications that serve the same purpose. The first application is more feature rich and its types are more complex, but uses old technologies and will be retired. It will ...
5
votes
4
answers
2k
views
If class B extends A, can we say that B depends on A?
Let's say we have 2 (Java) classes:
class A {}
class B extends A {}
To me, saying B extends A and B is dependent on A are both true (but not equivalent) in this situation. My colleague, OTOH, says ...
6
votes
4
answers
1k
views
How to avoid init methods when 2 objects need the reference of each other?
According to https://softwareengineering.stackexchange.com/a/334994/432039, I know init is a code smell and should be avoided, and one of the solutions is to use a builder to hold the state first ...
3
votes
3
answers
310
views
Handle hierarchical relationships between large number of enums
I am working on a C# project and I have a somewhat large number of labels (~100) that have some sort of relationships between one another. Here is a minimal dummy example that illustrates this:
...
-2
votes
1
answer
522
views
Defining functions inside vs outside a class
Say I have a class with a function do_thing that is comprised of multiple steps, which themselves segregate into functions (first_process and second_process). At what point would this be considered ...
2
votes
1
answer
158
views
Refactoring Processor classes
I am writing some python 3 bioinformatics software and was wondering about the best way to write it in an OOP format. I am pretty sure a lot of my classes are violating the SRP principle, but I'm not ...
2
votes
6
answers
422
views
Do private members/methods inherently violate the open-closed principle?
Doesnt private members and methods inherently violate the open-closed principle?
Given that private, protected and public modifiers are supported.
I came across this many times in codebases where ...