Object-oriented: Basics
Terms
undefined, object
copy deck
- What is object-orientation (high-level view)?
- A programming technology based on objects and classes.
- Object-orientation applies to what areas of software development lifecycle?
- Analysis, design, implementation.
- Use of objects distinguishes object-orientation from which other techniques?
-
- Traditional structured methods
- Knowledge-based systems
- Mathematical models - What are 4 ways to look at object-orientation?
-
- View of the world: A better approach
- Process
- Methods
- Implementation - Why did OO arise?
- Improvement over older structured techniques
- For organization, OO provides superior means of:
-
- Problem analysis/requirements
- Better software development practice
- Superior metrics
- Web presence & utilization
- Software reuse
- Software use
- Enterprise engineering
- 3rd party software is often OO - What was the first object-oriented language?
- Simula, 1967.
- What was the next big OO language, after Simula?
- Smalltalk
- What are the main OO languages today?
-
- C++
- Java
- VB.NET
- C# - What are the main differences between C++ and Java (high-level)?
-
- Java is simplification of C++
- Java is machine independent
- Java - write-once, run-anywhere - What is the main object-oriented methodology today?
- UML, Rational process
- What are the benefits of object-orientation?
-
- Exploit power of OOP
- Reuse of software & designs, frameworks
- Systems more change resilient, evolvable
- Reduced development risks, integration spread out
- Appeals to human cognition - What is Open Source software?
- Software systems and code given away freely
- Open Source most commonly written in which language?
- Java
- Which operating system is open source?
- Linux
- Which common web server is open source?
- Apache
- What are some advantages of open source?
-
- Often Java-based and OS-independent
- Bugs can be fixed when required
- Fully understand API when documentation not available
- Mailing lists/groups w/high quality support
- Can easily extend the software - What are the 2 major new object-oriented technologies?
- J2EE and .NET
- Recent Gartner report says that J2EE and .NET will each have __% of distributed system market?
- 40%
- J2EE is comprised of what 3 pieces?
-
- JSP: dynamic HTML views from server side
- Servlets: for control
- Beans & EJB: business logic - What is .NET's primary programming language?
- C#
- .NET also supports which languages (4)?
-
- C++
- Java
- J#
- VB - What is .NET's primary intention?
- Provide strong IDE to facilitate rapid development in a distributed environment (Web Services).
- What are Web Services?
- Object-oriented technology, based on SOAP & XML/Schemas for distributed application computing.
- What other technology, besides Web Services, attempts to provide distributed application environment?
- CORBA
- What standards are Web Services based on (3)?
-
- SOAP
- WSDL
- UDDI - How are parameters to Web Services handled?
- Serialized as SOAP XML messages
- Web Services send messages using what standard?
- SOAP / XML
- Web Services leverage which Internet transport mechanism?
- HTTP
- Which technolgoy is more complex: Web Services or CORBA?
- CORBA
- When is use of CORBA appropriate, rather than Web Services?
- For large data sets, with complex requirements
- Which technology replaced XML DTDs?
- XML Schema
- How do Web Services make use of SOAP?
- SOAP messages are sent between client & server.
- What is WSDL?
- Web Service Description Language
- What is the purpose of WSDL?
- Defines Web Service and possible SOAP messages.
- What is UDDI?
- Universal Description, Discovery and Integration
- What is the purpose of UDDI?
- A way of looking up Web Services of interest
- What is an object (Booch94, 3 parts)?
-
- Object has state, behavior and identity
- Structure & behavior of similar objects defined in their common class
- Terms "instance" & "object" are interchangeable - What is Encapsulation also known as?
- Information Hiding
- What is Encapsulation?
-
- Compartmentalizing structure & behavior of an abstraction
- Such interface for the abstraction is separate from its implementation - What is a Class (3)?
-
A specification, for objects, of:
- A structure
- Behavior
- Inheritance - What is a Class (general)?
- A collection of objects sharing structure and behavior, each of which has a unique identity
- What is a Class (Booch94)?
- A set of objects that share a common structure and a common behavior
- How are objects and classes related?
- A single object is an instance of a particular class.
- What is a meta-class?
- A class' class
- What is the "Infinite Regress of Objects and Classes"?
-
- Idea of infinite organization: object is instance of class, class is instance of meta-class, meta-class instance of meta-meta-class, etc.
- Silly
- Chain can be broken if meta-class is instance of itself - What does MOP stand for?
- Meta-Object Protocol
- What is a MOP?
-
(Meta-Object Protocol)
A system with meta-classes accessible to users. - What is Inheritance?
- A relationship between classes, where one class is a parent, that represents a is-a relationship between the classes
- Derived class is a _____ of the base class.
- Specialization
- What is multiple inheritance?
- When a class inherits from more than one parent class
- What are the problems associated with multiple inheritance?
- Hard to resolve ambiguity of duplicate names that occur in more than one parent class(es)
- What is the argument for the need for multiple inheritance?
-
- In the real world, many classes of objects inherit from >1 parent class
- Absence of multiple inheritance leads to wrapping other clases or duplicating code - What is dynamic inheritance?
- Ability to add/delete/change parents from objects.
- Why should we use inheritance?
-
- It's a natural way to model the world
- Allows for code & structural reuse - What is differential programming?
- Inheriting from a class in order to slightly modify the behavior of the parent object
- Why don't some people like inheritance?
-
- Some don't like coupling of classes
- Some complain that multiple inheritance is too complicated
- - What is generalization?
- To factor out common parts of derived classes into a common base
- What is overriding?
- Redefining a method in a derived class, providing specialized behavior
- What is the difference between object-based and object-oriented?
-
Object-Based Programming:
- Objects without inheritance
- Abstract data types, but no classes
Object-Oriented Programming:
- Includes inheritance and polymorphism - When is language considered object-oriented (Cardelli85)?
-
- Objects that are data abstractions w/interface of named operations & hidden local state
- Objects have an associated type
- Types may inherit attributes from super-types
=> Data abstraction + object types + type inheritance - When is a language object-oriented (Coad91)?
-
- Classes & objects
- Inheritance
- Communication w/messages - Is a class an object?
-
- In C++, no: classes not accessible to programs
- In Java, yes: all classes are instances of a meta-class - Is an object a class?
-
- In C++, no
- In Java, some: instances of a meta-class are both objects and classes - What is a method?
- Function or procedure defined in a class that implements some behavior and can access internal state of an object of that class
- What is OOP?
- Object-oriented programming
- What do OOA/OOD stand for?
- Object-oriented Analysis / Object-oriented Design
- What is Object-Oriented Analysis?
- Understanding a problem domain in terms of object-oriented concepts (classes and objects).
- What is Object-Oriented Design?
- Designing a system by modeling the components of the system using object-oriented concepts (classes & objects)
- What is the basic outline of a Waterfall lifecycle?
-
- Analysis
- Design
- Programming - What is the basic outline of a Spiral lifecycle model?
-
- Analysis, prototyping, risk mgmt
- Design, prototyping, risk mgmt
- Programming, prototyping, risk mgmt - What is the basic outline of an Incremental lifecycle model?
-
- A little analysis
- A little design
- A little programming
- Repeat - What does CMM stand for?
- Capability Maturity Model
- What is the CMM (Capability Maturity Model)?
- Process-based model for assessing level of an organization's software development skills/abilities
- What are the 5 levels of the CMM?
-
1. Initial - ad hoc, chaotic
2. Repeatable - every project handled similarly
3. Defined - standard processes defined/used
4. Managed - measurable basis for all improvements to process
5. Optimizid - emphasis on continued improvement on process - What is polymorphism (in terms of variable)?
- The use of a variable whose class is not known at compile time and which responds at run time according to the actual class of the object to which it refers.
- What is polymorphism (in terms of classes)?
- Processing objects differently, depending on their specific data type, by redefining methods for derived classes
- Is VB6 polymorphic?
- Yes, in that it supports interface-based polymorphism, though it does not support inheritance-based polymorphism
- What are the two main types of polymorphism (___-based)?
-
- Inheritance-based polymorphism (e.g. C++)
- Interface-based polymorphism (e.g. VB6) - What are the two main types of polymorphism (2nd version)?
-
- Ad hoc polymorphism
- Parametric polymorphism - What is Ad Hoc Polymorphism?
- Functions and data structures with parameters that can take on values of many different types
- What is Parametric Polymorphism?
- Functions and data structures that parametrize over arbitrary values (e.g. list of anything)