500 likes | 715 Views
OOP. Schedule. Wed, 06:25-09:05PM Rice Campus - Wheaton Room RI 148 . Java Must Have. To write your first program, you need: The Java TM 5 Platform, Standard Edition. A text editor. Notepad, the simple editor included with the Windows platforms. You can and should use an IDE Eclipse
E N D
Schedule • Wed, 06:25-09:05PM Rice Campus - Wheaton Room RI 148
Java Must Have • To write your first program, you need: • The JavaTM 5 Platform, Standard Edition. • A text editor. Notepad, the simple editor included with the Windows platforms. • You can and should use an IDE • Eclipse • Jbuilder • JDeveloper
Class Goals • Explain and justify the principles of Object Oriented concepts: • (review abstraction & abstract data types, encapsulation, inheritance, polymorphism, aggregation) • Analyze and identify the strengths (and weaknesses) of in-depth areas of the Object Oriented paradigm. • Analyze, explain, & compare the qualities of Object Oriented languages and how well they support the object model. • Explain and analyze the key points of Object Oriented analysis.
Class Goals • Explain and analyze the key points of Object Oriented design. • Design, implement, test and debug multi-phased Object Oriented application. • Explain and utilize contemporary Object Oriented methodologies (data-driven methodology and behavior-driven methodology) • Utilize recent notation (Unified Modeling Language) to express the artifacts of Object Oriented Analysis & Design (class design, class relationships, object interaction, object states, etc.)
Class Goals • Perform Object Oriented Analysis & Design on a real-world problem. • Explain and Utilize Complex Design Patterns. • Create an implementation of the resultant Object Oriented design. • Examine new & contemporary concepts in Object Orientation. • Communicate the deliverables of a software development project.
Laboratory Projects • A 2-part large-scale Object Oriented software development project is required by each student in which the student will experience designing, coding, testing and debugging a significant Object Oriented application. • The combined parts of the course project are generally range from 5000 - 10000 lines of code. • Part 1 (6 weeks): object-oriented analysis and design of the software system. • Part 2 (6 weeks): object-oriented detailed design, implementation using object oriented language, and testing of the software system.
Text Book • TEXTBOOK (REQUIRED) • Object-Oriented Software Development Using Java • Xiaoping Jia, Second Edition
ContactInformation • Class Home Page, http://www.csam.iit.edu/~oaldawud/cs445/ • Omar Aldawudaldaoma@iit.edu
Introduction Chapter 1
n t g a t h e r i n g estimating scheduling tracking d e l i v e r y s u p p o r t f e e d b a c k C o m m u n i c a t i o n Planning p r o j e c t i n i t i a t i o n r e q u i r e m e M o d e l i n g a n a l y s i s C o n s t r u c t i o n d e s i g n D e p l o y m e n t c o d e t e s t SE Generic Activities SW Engineering is the: • Analysis, Design, Construction, Verification and Management of Software.
Rational Unified Process • a “use-case driven, architecture-centric, iterative and incremental” software process closely aligned with the Unified Modeling Language (UML) • Tools are used to describe customer views (use cases) • Used mainly for OO based methodologies • Runs in phases
The Unified Process (UP) inception Phase 1 Communication + Planning Phase 2 Planning + Modeling elaboration inception Phase 3 Coding, unit test & integrate Components Construction Transition result Phase 4 Deployment Production
Extreme Programming (XP) • The most widely used agile process, originally proposed by Kent Beck. It encompasses the following activities: • XP Planning • Begins with the creation of “user stories” • Agile team assesses each story and assigns a cost • Stories are grouped to form a deliverable increment • A commitment is made on delivery date • After the first increment “project velocity” is used to help define subsequent delivery dates for other increments • Project Velocity is a measure of the number of stories implemented in the first release
Extreme Programming (XP) • XP Design • Follows the KIS principle – Simple Design • Design provide implementation guidelines for a story • Encourage the use of CRC cards or class diagram • For difficult design problems, suggests the creation of “spike solutions”—a design prototype • XP Coding • Recommends the construction of a unit test for a story before coding • Encourages “pair programming” for stories • Integration Team – integrates all stories • XP Testing • All unit tests are executed daily • “Acceptance tests” are defined by the customer and executed to assess customer visible functionality
Modeling the Real World • Components of a software system is an interpretation of the real world • Model • Algorithm • Object Orientation is a software development model that makes use of objects as a representation of the real world
Object Orientation • OO development processes is similar to those of the waterfall model (What Booch calles Macro Process) • Conceptualization – requirements gathering • OO Analysis and Modeling • Goal to build models of the system’s behavior using UML • A model should capture the essential and relevent aspects of the real world • OO Design • Goal to create an architecture for implementation • Implementation • Use OO programming language (such as Java) to implement the design • Coding, testing and debugging • Maintenance • Evolution support
Booch [94] Approach • Proposed an iterative SW development process for OOSD • The approach consist of a number of successive iterations (micro process): • Identify the classes • Identify the semantics (attributes and behavior) • Identify the relationships • Define class interfaces • Implementing the class • Booch’s approach adopted by RUP and XP
High Level Programming Languages Java Introduction
High-Level Languages • Compiled • Compiler converts source code (instructions and data) into machine language, then program is executed • Interpreted • Interpreter converts instructions into machine language at run time as instructions are executed • Usually executes more slowly than compiled program
High-Level Languages • Are portable • Are translated into machine code by compilers • Instructions are written in language similar to natural language • Examples -- FORTRAN, COBOL, Pascal, C, C++ • Many are standardized by ISO/ANSI to provide an official description of the language
Java • Combination of compiler and interpreter • Compiler converts source code into byte codes (an instruction set for a virtual, machine-independent processor) • At run time, the Java Virtual Machine (JVM) interprets the byte codes and converts them into the machine language on which the program is running.
Programming a Computer: Java • The Java Programming Language • A high-level language • Java compiler translates to Java bytecodes for execution on a Java Virtual Machine (JVM)
Windows PC running JVM Java Program Java Bytecode Unix box running JVM Macintosh running JVM Java Portability
Java • Achieves portability by using both a compiler and an interpreter • Java compiler translates a Java program into an intermediate Bytecode--not machine language • An interpreter program called the Java Virtual Machine (JVM) translates each successive instruction in the Bytecode program to machine language and immediately runs it
The Java Language • Created by Sun Microsystems in 1995 • Syntax based on C++ • Object-Oriented • Support for Internet applications • Extensive library of prewritten classes • Portability among platforms • Built-in networking
Java Programs • Applets • Small programs designed to add interactivity to Web sites • Downloaded with the Web page and launched by the Internet browser • Servlets • Run by Web server on the server • Typically generate Web content • Applications • Programs that run standalone on a client
An Introduction to Programming • Programming Basics • Program Design with Pseudocode • Developing a Java Application
Programming Basics • Programming is translating a problem into ordered steps consisting of operations a computer can perform: • Input • Calculations • Comparisons of values • Moving data • Output • The order of execution of instructions is called flow of control
Program Design with Pseudocode • Pronounced sue-dough-code • English-like language for specifying the design of a program • Programmer can concentrate on design of program without worrying about Java language rules (syntax) • Then convert pseudocode into Java code
Four Types of Flow of Control • Sequential Processing • Execute instructions in order • Method Call • Jump to code in method, then return • Selection • Choose code to execute based on data value • Looping or Iteration • Repeat operations for multiple data values
Sequential Processing • The pseudocode for calculating the sum of two numbers would look like this: read first number read second number set total to (first number + second number) output total Statement Statement Statement . . .
Method Call • Calling the method executes the method • Methods can take arguments (data to use) and return values • Here is pseudocode for calculating the square root of an integer: read an integer call the square root method, with integer as argument output the square root
Methods . . . sqroot method SUBPROGRAM1 a meaningful collection of SEQUENCE, SELECTION, LOOP, SUBPROGRAM
IF Condition THEN Statement1 ELSE Statement2 Selection • The pseudocode for determining if a number is positive or negative is: read a number if the number is greater than or equal to 0 write "Number is positive." else write "Number is negative." True Statement Condition . . . Statement Statement False
False . . . Condition True Statement WHILE Condition DO Statement1 Looping • The pseudocode for finding the sum of a set of numbers is: set total to 0 read a number while there was a number to read, add number to total read the next number write total
EVENTHANDLER a subprogram executed when an event occurs EVENT ASYNCHRONOUS CONTROL
Object-oriented Programming (OOP) • Class • tool for encapsulating data and operations (methods) into one package • defines a template or model for creating and manipulating objects • Objects • data created using the class and its methods • an object is an instance of the class • creating an object is instantiation • A software components consists of variables andmethods. • A mechanism for encapsulation. • modularity • information hiding
Object-oriented Programming (OOP) • Message • Objects communicate via message passing. • A message consists of an object (the recipient), a method, and optional parameters. • Inheritance • A mechanism to organize classes by commonalities. • subclasses, specialization • superclass, generalization
Classes and Objects Examples • Date class • data: month, day, year • operations to set and return month, day, year • a Date object • Aug • 28 • 2007
Classes and Objects • An object: point1 • Attributes or fields: int x, y; • A method: void move(int dx, int dy) • A message: point1.move(10, 10)
Classes and Objects • Inheritance Example: • Student • GradStudent • MSStudent • PhDStudent • UGStudent
OOP Advantage: Reuse • Well-written classes can be reused in new applications • Shortens development time because programmers don't need to write new code • Programs are more robust because the class code is already tested
An Object of class Time OPERATIONSDATA Set Private data: hrs 8 mins 25 secs 42 Increment Write . . . Time