OOPLs Help companies reduce complexity Increase competition in open markets Speeds up development...
-
Upload
phoebe-hawkins -
Category
Documents
-
view
212 -
download
0
Transcript of OOPLs Help companies reduce complexity Increase competition in open markets Speeds up development...
A Comparison of Object Oriented Languages in Software Engineering
Written by Mohammed Reza Nami
Presented by Mark Simko
Introduction
OOPLs Help companies reduce complexity Increase competition in open markets Speeds up development Improves maintenance, resusability,
modifiability of software
Importance
O-O improves efficiency in development and maintainance
Decreases complexity Scalable Distributed Systems
Survey
AT&T Bell Labs project using OOPL found
30% reduction in development time 20% reduction in staff effort Able to reuse the code in many other
projects
O-O Concepts
Object and Class
Object being a black box Objects are individual instances of a
class
O-O Concepts (con’t)
Properties
Inheritance Polymorphism Dynamic Binding Encapsulation Information Hiding
Object Oriented Programming Languages
Smalltalk C++ Java Eiffel
Smalltalk
Pure OOL Run-time binding Objects can do 3 things Hold state Receive a message Send a message to itself or another
object
C++
Compatible with C Fast and efficient Utilizes compile-time binding High run-time efficiency with small
code size Trades off some power to reuse classes
Java
Portable, can be used on any web-enabled computer
Mixture of C++ and Smalltalk Syntax of C++ but improved upon it Garbage Collection Virtual Machine
Eiffel Language
Portable Open System Design by Contract Automatic Documentation Multiple Inheritance Repeated Inheritance Statically Typed Dynamically Bound
Static Typing
Eiffel – Statically typed C++ - Statically typed (however the
language supports C-style “casts” which really amount to invitations to violate type rules
Java – typed, mostly statically but dynamic typing is required for generic container structures
Smalltalk – Dynamically typed
Compilation Technology
Eiffel – Combination of interpretation and compilation in same environment
C++ - Usually complied Java – Usually mix of interpretation and
“on-the-fly” compilation Smalltalk – Historically interpreter-
based, currently mix of interpretation and compliation
OOPLs and Quality Factors
Eiffel – Efficiency and portability C++ - Efficiency, maintainability,
portability and functionality Java – Maintainability, Usability,
Functionality, and Portability Smalltalk – Functionality and
Maintainability
Automatic Documentation
Eiffel can generate many views, graphical or textual
Class interfaces Inheritance hierarchies High level “bubbles and arrows” Diagrams
Multiple Inheritence
Eiffel – Multiple and repeated inheritance, widely used
C++ Multiple inheritance (though discouraged by many for various problems)
Java – Single inheritance (but multiple interface facility)
Smalltalk – Single Inheritance
Building Infrastructures
Java RMI (Remote Method Invocation) Communicates between networking
and distributed computing Uses a proxy object Can have many types Client can find out what service was
returned
Conclusion
Used worldwide for commercial, DoD, and other government projects
Less complexity = increase in maintainability
OOPL must treat the O-O paradigm to gain the benefits