• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Ron McLeod
  • Paul Clapham
  • Bear Bibeault
  • Junilu Lacar
Sheriffs:
  • Jeanne Boyarsky
  • Tim Cooke
  • Henry Wong
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • salvin francis
  • Frits Walraven
Bartenders:
  • Scott Selikoff
  • Piet Souris
  • Carey Brown

Domain Objects/ Business Objects

 
Greenhorn
Posts: 8
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
we have a requirement to track performance of vendors (a feature in the application)

Is Vendor performance a business object? is this the right abstraction
else the requirements of vendor performance has been implemented by class like vendor_master, vendor_P_codes, vendor_quality-audits and should i treat these class as the business objects.

Thanks for the help!

- Prasad

 
Ranch Hand
Posts: 2187
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Objects have data and behavior. The data of an object usually describes something about itself, e.g. name, size, color, etc.. The behavior of an object usually does something, e.g. calculate sum of x and y, generate unique identifier, etc.

What type of behavior would a vendor performance object have?
 
Prasad Yanam
Greenhorn
Posts: 8
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Vendor performance would calculate the performance of vendors and maybe create chargebacks based on their performance.
Currently the way the functionality is been implemented is by 5 classes like vendor, vendor_p_codes, vendor_p_results etc, can i call these business objects? aren't these classses implementation specific?

Are business object/Domain objects same abstraction as the classes that realize them or
can domain object abstract itself higher than the classes the realize them.

I may be missing something here big time, I am having trouble defining business objects, if i define something like vendor_p_codes as domain object it makes no sense as it has nothing to do with the domain and very implementation specific of how we decided to implement a specific domain feature.

- Prasad

 
Jimmy Clark
Ranch Hand
Posts: 2187
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In regards to object-oriented terminology...

In academia and research settings, the term "domain object" is used.

In commercial business environments, the term "business object" is used.

They are the same.

Naming an object-oriented class "vendorperformance" is not very good. You should think of a better name. How about VendorAnalyzer?

You should define what "performance" means to your application so that readers can understand what you are writing about. What exactly is being "calculated"?

It seems that you don't completely understand the term "business object" or "domain object". They are the same.

You are also throwing terms like abstraction and implementation around and sounding very confused.

Take a few moments and try to figure out what your problem is without using "object-oriented" terminology.

 
Ranch Hand
Posts: 1936
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

James Clark wrote:In regards to object-oriented terminology...

In academia and research settings, the term "domain object" is used.

In commercial business environments, the term "business object" is used.


Actually, they're not OO terms, they are general terms, in other words plain-old English, not jargon.

Anyway, Core J2EE Patterns has Business Object pattern: http://www.corej2eepatterns.com/Patterns2ndEd/BusinessObject.htm.
But it's just a pattern name in Core J2EE Patterns.
 
Prasad Yanam
Greenhorn
Posts: 8
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
We have an existing system and trying do domain object model. Below are the requirements for vendor performance module.

Requirements - When inventory is received into warehouse from vendors, based on vendor, certain quality checks are performed on the inventory and based on the checks vendor performance is evaluated.

The above requirement has been implemented by class like vendor, vendor_p_codes, Vendor_p_rslt etc (abt 5 classes). For a domain object model how do i go abt identifying the domain object for vendor performance.

Vendor is already a business object, now is there a domain object here that i need to indentify?

- Prasad
 
Hong Anderson
Ranch Hand
Posts: 1936
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Prasad Yanam wrote:We have an existing system and trying do domain object model. Below are the requirements for vendor performance module.

Requirements - When inventory is received into warehouse from vendors, based on vendor, certain quality checks are performed on the inventory and based on the checks vendor performance is evaluated.

The above requirement has been implemented by class like vendor, vendor_p_codes, Vendor_p_rslt etc (abt 5 classes). For a domain object model how do i go abt identifying the domain object for vendor performance.

Vendor is already a business object, now is there a domain object here that i need to indentify?

- Prasad


I suggest to use term domain model. Don't get confused about domain objects/business objects, I think you're referring the same thing. Anyway, from now just call it domain model, shall we?

I suggest you to read Domain-Driven Design, you will understand more about domain model.
From DDD, heart of software is in Domain layer, which contain model elements like Entities, Value Objects, and Services.

From your requirements, Vendor is an Entity. I'm not sure about Vendor performance, is it an attribute of Vendor?
Is it something like this?
 
Jimmy Clark
Ranch Hand
Posts: 2187
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
So, you have a class named "Vendor". What behavior or functionality do objects of this type have?

 
Prasad Yanam
Greenhorn
Posts: 8
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Vendor performance is not an attribute of vendor.
Vendor performance funtionality is supposed to calculate how well the vendor did against an Order. For example we place an order to vendor A and VEndor A ships the goods. When the goods are received at warehouse system checks for the time the goods were received, the quality of the goods (number of defective merchandize), shipped qty (vendors sometimes are allowed to ship more than ordered qty but if they cross the tolerance lvl then they will be charged for extra inventory) and calculates how well vendor did against the order. This is small functionality in the system and we are tring to reverse engineer to business objects (that what they call it here).

These business objects are supposed to help the product managers and business analyst to understand the static view of the system.
We already defined Purchase order, Shipment etc as business objects. Now there are processes like receiving, vendor performance, Again all the code is already written and as i said there abt 5 classes that have been implemented for vendor performance.

When we are told to do business objects, should we drill into these funtional processes and identify objects? apart from Purchase order, Shipment etc that we have already done.

The class vendor_p_codes is nothing but list of all performance codes applicable for a vendor. Now do we list Vendor_P_code as a business object?

Guys, thanks for all the help here. I really appreciate your time & help.

- Prasad

 
Jimmy Clark
Ranch Hand
Posts: 2187
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The class that contains a static list of codes for assigning performance metrics defines a business object.
Objects of this type would be a "business object" which doesn't have any behavior. It is a business object because it contains (holds) business data.

Keep in mind that the underscore character "_" should not be used in classnames. It looks sloppy and demonstrates a poor understanding of
object-oriented design.

Anyway, you need to identify in the existing code, where the statements are located that perform this analysis.

As you mention, the code exists already, you need to figure out how to read those 5 classes that contain this functionality, identify how
it can be redesigned into a single class.



 
Prasad Yanam
Greenhorn
Posts: 8
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

It is a business object because it contains (holds) business data.

- This helps, i was looking for some of these rules that can help identify business objects that product management and Business analyst should have visibility to.
 
Jimmy Clark
Ranch Hand
Posts: 2187
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

It is a business object because it contains (holds) business data.



Keep in mind that this is at run-time. Ideally, the values for vendor performance codes should be stored in (1) an XML-based file, (2) a properties file, or (3) a relational table. Business analysts should be able to add and modify the vendor codes without there being any compiling or coding. What this means is, do not hard-code these values in this class. This is bad!

Putting the values in a Set or Map object is ideal. So, the functionality of this class is to load the vendor codes into memory (at runtime).

Good luck!

 
Hong Anderson
Ranch Hand
Posts: 1936
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Prasad Yanam wrote:Vendor performance is not an attribute of vendor.
Vendor performance funtionality is supposed to calculate how well the vendor did against an Order. For example we place an order to vendor A and VEndor A ships the goods. When the goods are received at warehouse system checks for the time the goods were received, the quality of the goods (number of defective merchandize), shipped qty (vendors sometimes are allowed to ship more than ordered qty but if they cross the tolerance lvl then they will be charged for extra inventory) and calculates how well vendor did against the order. This is small functionality in the system and we are tring to reverse engineer to business objects (that what they call it here).


Then Vendor performance evaluator should be a service. You should analyze what methods it should have.


Prasad Yanam wrote:
When we are told to do business objects, should we drill into these funtional processes and identify objects?


When creating domain model, you should begin from requirements and use cases.

Prasad Yanam wrote:
The class vendor_p_codes is nothing but list of all performance codes applicable for a vendor. Now do we list Vendor_P_code as a business object?


Vendor_P_code is part of domain model.
 
Prasad Yanam
Greenhorn
Posts: 8
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
One of the classes we have is inspectionRules which loads the rules to determine how much inventory and what type of inventory needs to be checked for quality inspection for the goods that are received from vendor. Now these rules are set up by the users and going by the what i learnt from previous emails , this class should be business object too? am i missing something?

This not an object with transaction data but rather load rules that are used to identify the transaction data(inventory) that needs to go through inspection.


- Prasad
 
Jimmy Clark
Ranch Hand
Posts: 2187
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Prasad,

As mentioned earlier, you are not clearly understanding the definition of "business object" and the relationship to business rules and business requirements. It is unclear how severe this is, but you could surely benefit from further study.

A class is not an object. There is a difference between these two concepts.

An object that executes business rules and/or contains business data is a "business object."

An object that directly implements business requirements is a "business object."

A class is a static description of a certain type of object. It describes the data and behavior applicable to objects of the specified type.
 
Prasad Yanam
Greenhorn
Posts: 8
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
James, looks like i have a lot of study to do. Do know of any good online resources i can get started with.

- Prasad
 
Jimmy Clark
Ranch Hand
Posts: 2187
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Not really, but it has been a long time since I reviewed any related online materials. If you belong to a university, you might want to
check their online library resources. There are typically many good research papers and thesis about these topics.

Keep in mind that everything is not available "free" and "online." And what you find "free" and "online" is usually slightly or completely incorrect for anything mildly complex.

A good start for you would be the book below. Enjoy!

Object-Oriented Analysis and Design with Applications (3rd Edition)
Hardcover: 720 pages
Publisher: Addison-Wesley Professional; 3 edition (April 30, 2007)
Language: English
ISBN-10: 020189551X
ISBN-13: 978-0201895513
 
Hong Anderson
Ranch Hand
Posts: 1936
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
For reading books online, I recommend Google Book, really great website, but you may not able to read every page.
 
That is a really big piece of pie for such a tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop
https://coderanch.com/wiki/718759/books/Building-World-Backyard-Paul-Wheaton
    Bookmark Topic Watch Topic
  • New Topic