Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 154179
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T09:55:58+00:00 2026-05-11T09:55:58+00:00

I’m trying to wrap my head about how to properly implement an OOP design

  • 0

I’m trying to wrap my head about how to properly implement an OOP design for business objects that:

  1. Have a ‘master list’ in a database (ex. classifications)
  2. Are a part of another object as a property (i.e. object composition) but with additional properties

Here is where I’m stuck on the theory. Suppose that I have a Classification object, inheriting from the abstract class BusinessObject with the CRUD functions defined (MustOverride). This will give me:

Public MustInherit Class BusinessObject     Public Sub New()      End Sub      Public MustOverride Function Create() As Boolean     Public MustOverride Sub Read(ByVal id As Integer)     Public MustOverride Function Update() As Boolean     Public MustOverride Function Delete() As Boolean End Class  Public Class Classification     Inherits BusinessObject      <Fields, properties, etc. for ID, Name (or Description), and       IsActive. DB table has only these 3 fields.>      Public Sub New()         MyBase.New()     End Sub      Public Overrides Function Create() As Boolean         Dal.Classifications.Create(Me)     End Function      Public Overrides Function Delete() As Boolean         Dal.Classifications.Delete(Me)     End Function      Public Overloads Overrides Sub Read(ByVal id As Integer)         Dal.Classifications.Read(Me)     End Sub      Public Overrides Function Update() As Boolean         Dal.Classifications.Update(Me)     End Function End Class 

This will allow me to use the Classification object on a form where a system admin can manage the master list of Classifications in the system. No issue here.

Now, I want a Customer object to have a property of type Classification (object composition) but with one caveat – the Classification object requires an additional field, Level, when it becomes a property of the Customer object. Level is a logical part of Classification according to the business – a Classification has an application-user-entered numeric level. So I created a class CustomerClassification inheriting from Classification:

Public Class CustomerClassification     Inherits Classification      Private _level As Integer      Public Property Level() As Integer         Get             Return _level         End Get         Set(ByVal value As Integer)             _level = value         End Set     End Property      Public Sub New()         MyBase.New()     End Sub End Class 

And the Customer object will be composed of CustomerClassification:

Public Class Customer     Inherits BusinessObject      Public Property Classification() As CustomerClassification     ........ etc End Class 

Now, my design problem is that the Create, Read, Update and Delete functions are still exposed in the CustomerClassification object:

Dim c as New Customer c.CustomerClassification.Update() ' <-- Not desirable! 

What kind of other design could I implement here? It’s obvous that I’m designing this the wrong way, but I don’t see an easy alternative pattern. I don’t want to repeat the code in the CustomerClassification class by not inheriting Classification and repeating all the field and property code, but I also don’t want to expost CRUD functions to the CustomerClassification level. What am I missing in looking at the overall class design?

EDIT: Saving the classification level to the database will be handled by the customer object, because the database is legacy and the field for Level is defined in the customer table.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T09:55:59+00:00Added an answer on May 11, 2026 at 9:55 am

    If I understand your problem correctly, your Customer class does not need to aggregate an instance of the actual Classification class. It needs to have an instance of a separate class, which specifies the level and the type of Classification, represented by an ID or enum value. The Classification class should be used only in the scenario of an admin maintaining the list of classification IDs/enum.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 140k
  • Answers 140k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer I'm not entirely sure what you are doing above. Personally… May 12, 2026 at 7:53 am
  • Editorial Team
    Editorial Team added an answer Could be lots of things. Try these for a start:… May 12, 2026 at 7:53 am
  • Editorial Team
    Editorial Team added an answer I also think that using specialized parsers will be better,… May 12, 2026 at 7:53 am

Related Questions

I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti
I am currently running into a problem where an element is coming back from
Seemingly simple, but I cannot find anything relevant on the web. What is the
Does anyone know how can I replace this 2 symbol below from the string
Configuring TinyMCE to allow for tags, based on a customer requirement. My config is

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.