Object-oriented modeling: Difference between revisions

Content deleted Content added
Took out erroneous claim that modeling and programming are the same thing. See Talk page.
Rewrote the article and added one reference. Removed the unreferenced tag. Only one ref but for the amount of text it's appropriate and the Jacobsen book cover everything written.
Line 1:
{{merge|Object modeling language|date=December 2012}}
'''Object-oriented modeling''' is an approach to modeling an application that is used at the beginning of the [[Software development process|software life cycle]] when using an object-oriented approach to software development.
 
The software life cycle is typically divided up into stages going from abstract descriptions of the problem to designs then to code and testing and finally to deployment. Modeling is done at the beginning of the process. The reasons to model a system before writing the code are:
'''Object-oriented modeling (OOM)''', is a modeling paradigm mainly used in [[computer programming]]. Prior to the rise of OOM, the dominant paradigm was [[procedural programming]], which emphasized the use of discrete reusable code blocks that could stand on their own, take variables, perform a function on them, and return values.
 
*Communication. Users typically cannot understand programming language code. Model diagrams can be more understandable and can allow users to give developers feedback on the appropriate structure of the system. A key goal of the Object-Oriented approach is to decrease the "semantic gap" between the system and the real world, to have the system be constructed using terminology that is the same as the functions that users perform. Modeling is an essential tool to facilitate this.
The object-oriented paradigm assists the programmer to address the complexity of a [[problem ___domain]] by considering the problem not as a set of functions that can be performed but primarily as a set of related, interacting Objects. The modeling task then is specifying, for a specific context, those Objects (or the Class the Objects belongs to), their respective set of Properties and Methods, shared by all Objects members of the Class. For more discussion, see [[object-oriented analysis and design]] and [[object-oriented programming]]. The description of these objects is a [[Logical schema|schema]].
*Abstraction. A goal of most software methodologies is to first address "what" questions and then address "how" questions. I.e., first determine the functionality the system is to provide without consideration of implementation constraints and then consider how to take this abstract description and refine it into an implementable design and code given constraints such as technology and budget. Modeling enables this by allowing abstract descriptions of processes and objects that define their essential structure and behavior.
 
As an example, in a model of a '''Payroll System''', a '''Company''' is an Object. An '''Employee''' is another Object. '''Employment''' is a Relationship or Association. An '''Employee Class''' (or Object for simplicity) has Attributes like Name, Birthdate, etc. The Association itself may be considered as an Object, having Attributes, or Qualifiers like Position, etc. An '''Employee Method''' may be Promote, Raise, etc.
 
The Model description or Schema may grow in complexity to require a Notation. Many notations have been proposed, based on different paradigms, diverged, and converged in a more popular one known as [[Unified Modeling Language|UML]].
 
An informal description or a Schema notation is translated by the programmer or a [[computer-aided software engineering|CASE]] tool in the case of Schema notation (created using a Module specific to the CASE tool application) into a specific programming language that supports [[object-oriented programming]] (or a Class Type), a [[declarative language]] or into a [[logical schema|database schema]].
 
Object-oriented modeling is typically done via [[use cases]] and abstract definitions of the most important objects. The most common language used to do object-oriented modeling is the [[Object Management Group|Object Management Group's]] [[Unified Modeling Language|Unified Modeling Language (UML)]]. <ref>{{cite book|last=Jacobsen|first=Ivar|title=Object Oriented Software Engineering|year=1992|publisher=Addison-Wesley ACM Press|isbn=0-201-54435-0|pages=15,199|coauthors=Magnus Christerson, Patrik Jonsson, Gunnar Overgaard}}</ref>
== References ==
{{reflist}}
{{Unreferenced|date=December 2009}}
 
[[Category:Object-oriented programming]]
[[Category:Software design]]