Questions tagged [object-oriented-design]
Object-oriented design is the process of planning a system of interacting objects for the purpose of solving a software problem.
1,741 questions
2
votes
3
answers
227
views
Adding "caller specific" special cases to a factory
So I have this setup with a factory:
class Base;
class A : public Base;
class B : public Base;
...
class Factory
{
public:
Base* CreateBase(std::string TypeToCreate, const Parameters& P)
...
1
vote
2
answers
268
views
How to Handle Data Persistence In Domain Driven Design
I am currently reading about domain-driven design and n-tier architecture with a service layer, and comparing them to try to understand how each architecture is executed.
For n-tiers (specifically 3-...
0
votes
6
answers
296
views
Design pattern for exposing different parts of interface to different entities
In a certain program I would like to have three objects, say, a, b, and c, with c being a shared private member (sub-object) of a and b. The data between the three objects shall only go this way:
a &...
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 ...
1
vote
3
answers
276
views
How does Object-Oriented Design fit into N-Layered Architecture?
Normally an N-Layered application is structured as follows.
User Interface layer
Business Logic Layer
Data Access Layer
DAL contains objects (data containers) representing business entities. The BLL ...
10
votes
11
answers
4k
views
Difficulty understanding benefit of Separation of Concerns
One of the motivations for separation of concerns is so a change in one place does not affect the other. I am going to make an argument with my limited understanding. Here is a scenario where I fail ...
5
votes
5
answers
977
views
Handling class specific behavior: polymorphism vs instanceof
I'm designing a system with different types of components, and I'm trying to decide whether to use polymorphism or instanceof checks for handling type-specific behavior.
I see two possible approaches:
...
0
votes
1
answer
153
views
LabVIEW Object-Oriented Scripting Engine
This question is for LabVIEW 2019. Highlighting that fact first because some of the "standard" object-oriented techniques like interfaces, type inference, template specialization, etc. aren'...
3
votes
0
answers
264
views
How to encapsulate functions inside a library
I'm working on a project that uses an in-house library, which is also used by other projects.
There are some classes and methods in other classes that are not used outside the library itself, is there ...
3
votes
4
answers
2k
views
Avoiding instanceofs with GUI composites
I have a stack of custom Row widgets. Each of them is a label with some editComponent (often a JTextComponent). Rows are aware of their previous and next siblings (if a Row has no such sibling, the ...
2
votes
5
answers
296
views
Refactoring object of large set of properties
I have a class that looks like:
class Vehicle:
coordinates: GeoCoordinates
speed: float
rpm: float
egt: float
// 100+ other parameters
A repertoire of concrete classes that use ...
1
vote
3
answers
312
views
How to allow users to provide their own child classes in a factory design pattern in c++?
I am building a c++ project that will allow users to essentially model and create their own fleet of cars.
Right now, the approach I have in mind is a Car Factory Class that will implement all of the ...
2
votes
3
answers
1k
views
Is breaking encapsulation a necessary compromise for serialization?
I've been considering the way to solve this problem for a while, and I'm currently stuck between two options I both feel are suboptimal. Here's an abstract example of what I'm dealing with:
I have a ...
0
votes
2
answers
186
views
Designing a Two-Party Protocol
I want to design a two-party protocol that runs on two different processes;
each process is one party of the protocol.
My implementation of a Protocol looks as follows:
enum class Role { P1, P2 };
...
2
votes
3
answers
550
views
Implementing factory that return the correct type
Imagine I have a factory that must create object based on unknown input (let's say user input).
class Base;
class MyFactory {
static unique_ptr<Base> CreateBase(Input& input);
}
Now this ...
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 ...
2
votes
6
answers
1k
views
Is it ok to assert on the behavior of return values of a testable class?
So I have a dialog for generating a random password. The user can set min, max, character categories (upper, lower, etc.). What the user basically does is configuring a StringGenerator that does the ...
0
votes
5
answers
929
views
Is it bad to pass builders as constructor arguments?
Note. It's a "spin-off" from my previous question. Not a duplicate — it focuses on a different topic
I got to know builders from Bloch's Effective Java. However, I made two changes to his ...
1
vote
3
answers
469
views
Should everything be buildable?
You have some class that performs a certain job
public class MyClass {
public MyClass() {
// ...
}
// ...
}
Then, a spec change comes around. The responsibility of the class is the ...
2
votes
2
answers
316
views
Is it ok to extend utilities?
Apache Commons has StringUtils. It's great, but I wish it had a shuffle() method or similar
Is it ok to create my own StringUtils that extends Apache's StringUtils and adds the method (Apache's class ...
0
votes
3
answers
178
views
Exposing dependencies results in "fat" constructor. What should you do next?
You take a non-testable class with a lot of static dependencies and expose, and expose until they are all explicitly declared in a constructor
But halfway through that nice plan, you notice your ...
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 ...
1
vote
2
answers
248
views
Abstraction for user notification
We have a desktop Swing application. It executes operations against a DB. It could be plain DML, it could be procedures. In both cases, it could result in an error. In that case, we need to display a ...
1
vote
2
answers
251
views
Passing required args of same type to super constructor
Imagine an abstract superclass with several required (and final) properties of the same type
How do you pass the args in its subtype safely?
This is not safe since you can confuse the order by mistake ...
1
vote
1
answer
380
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 ...
2
votes
2
answers
936
views
Optimal way to share data between different classes
I have a C++ code that performs simulation of a physical system which deals with motion of objects. It has the following classes:
Class Main, containing all the main calculation methods and the data ...
2
votes
2
answers
426
views
In unit testing: How to abstract a dependency of subject under test?
Disclaimer: I am learning unit testing. I am also kind of beginner in object-oriented design.
Currently, I am involved in the development of an application to manage the finance of a humble food ...
2
votes
1
answer
151
views
For N and NBuilder, should N be an instance variable of NBuilder, or all parameters of N be instance variables of NBuilder,finally new N() in build()?
As far as I know about builder pattern, for example, an object, Student:
public class Student{
private String name;
private int age;
//setter and getter
}
to apply builder pattern to ...
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
1
answer
211
views
Seeking Clarification on the Abstract Factory Pattern
I am seeking clarification on the exact purpose and definition of the Abstract Factory pattern.
According to the GoF (Gang of Four) book, the intent of the pattern is to:
Provide an interface for ...
3
votes
1
answer
616
views
Object-oriented programming design with relational database tables
I want to understand what is considered best-practice to better align with OOP when handling relational databases. I cannot find any online examples where classes and a more maintainable/re-usable ...
14
votes
3
answers
10k
views
My use case diagram is a mess. What can I do?
I was asked to build a use case diagram for a case study of a charter boat company. I said that the system will implement a shift away from their use of manual forms into an online booking and payment ...
24
votes
16
answers
19k
views
How far can you push Object Oriented Programming?
A getter is a failure to design an object. It violates encapsulation which is a core principle of object oriented programing.
Now please tell me, how do you design a libraries hash table collection ...
0
votes
1
answer
193
views
Is it good practice for object APIs to be required to be called in sequence to gather information?
I had this discussion with someone and it ended ambiguously.
Suppose you have a class that needs to Parse a file to gather some information. It can expose this information to you after the fact.
...
2
votes
2
answers
946
views
Should private attributes or public attributes be the default in Python classes?
In python we use a leading _ to make object attributes implicitly "private". If we want to give people set/get access we can use the @property decorator. Or, if setting/getting is allowed ...
1
vote
2
answers
147
views
How do I reduce number of FieldValidator derivations?
I am trying to write RSQL Parser which checks if the RSQL is logically correct.
while the RSQL Java library checks whether the RSQL expression is grammatically correct, it doesn't check if the ...
19
votes
6
answers
9k
views
Is utilizing a singleton for a cache an antipattern?
I'm currently writing an MVC application and I need a class that can:
A: get, add and remove data(specifically a TreeSet of sorted strings that I want stored in memory, but I doubt the data itself is ...
0
votes
1
answer
293
views
Function objects with no state shouldn't be object oriented? [closed]
My question relates to this topic here: Are classes with only a single (public) method a problem?
There I read in the comments often something like that:
It is no longer object oriented. Because ...
14
votes
5
answers
5k
views
How to "Tell, don't ask" when 2 objects involves in the condition and the decision at the same time?
According to Explanation on how "Tell, Don't Ask" is considered good OO, I know the following is bad:
if(a.isX){
a.doY();
}
public class A{
public boolean isX;
public void ...
-3
votes
1
answer
243
views
Should you default to using classes in C++? [duplicate]
I recently discovered the KISS and YAGNI principles which made me question my usage with classes because I use them constantly without really thinking about it and I realized my code could be much ...
-3
votes
1
answer
303
views
How should I architect a cricket scoring app?
Cricket scoring is complex and I want to build an app in part to practice good design principles/patterns and develop a clean solution.
A few high level classes I have in mind are:
Match | Innings | ...
2
votes
2
answers
591
views
Is this architecture overkill? What is a good way to architect this software?
I have an algorithm I am trying to implement that has steps 1 to 5. There are several different ways I could implement each step. Each calculation step is essentially just an astronomy calculation, ...
0
votes
1
answer
169
views
How to model in OOP interactions with entities in other systems?
Assume we are designing a typical bank account management system. Customers can have one or more accounts. Customers can deposit cash, withdraw cash or transfer money to another account (and, of ...
0
votes
2
answers
233
views
Possible violation of LSP when adhering to ISP?
Recently I read about ISP and wanted to implement it into my project. While implementing my design I think I found a flaw which violates LSP but I'm not sure.
Given I have a game project, in which ...
0
votes
1
answer
227
views
Shopping Cart Design with SRP: Handling Cart Creation and Update Separately
I'm working on designing a shopping cart system that respects the single responsibility principle. However, I'm facing a challenge when it comes to handling cart creation and updating separately.
...
0
votes
1
answer
145
views
Functional interfaces or decorator-like implementations [closed]
Consider Chess as an example. Say, we have a lot of domain objects that are alike, in this case chess pieces. I have two proposes to implementing the behaviour of chess pieces. Both uses the following ...
0
votes
4
answers
294
views
What is the advantage/disadvantage of returning a UnSubscribe class to Observer as opposed to just calling a UnSubscribe method of Observable?
There are two ways to provide a way unsubscribe in Observer Design Pattern.
1. Provide a simple void UnSubscribe method:
public void UnSubscribe(IObserver observer){
// remove observer from List of ...
0
votes
0
answers
102
views
By creating an architecture, it is better to have many classes that handles different scenarios, or a single one that handles all? [duplicate]
During my limited professional experience, I have been involved in microservices projects with a common structure:
The Controller takes a request and validates it using the jakarta.validation....
2
votes
5
answers
432
views
Refactoring Java class for a cleaner design
I inherited some code that I have spent some time reviewing to get a better handle on its design.
There is one class that I came across that I have an idea for refactoring, but I am wondering if it I ...
1
vote
1
answer
210
views
Can DI without the dependency inversion be replaced by protected properties?
Many people come from frameworks that implement Dependency Injection and IoC containers for everything (in my case Angular 2+), so, this group of people will try to use dependency injection and IoC ...