Transcript Document
Introduction (1)
Chapter 1 (1)
Object-Oriented Modeling and Design
Byung-Hyun Ha
[email protected]
Lecture Outline
Prolog
Preface (in the Textbook)
Introduction
Object-oriented
Basics in Java programming
Caution!
My English
I’d like to hear from you, if you cannot understand
my words, please.
Prolog
This course is about software engineering or
software development, not about computer
programming including object-oriented languages
and coding.
However, if you are not familiar with computer
programming, it will never easy to understand
concepts in this book.
That is, the audience of this course is those who
have experience of computer programming.
Prolog
Who need to take this course
Those who want to be a professional programmer,
Those who want to be a S/W library developer,
Those who want to be (software) system engineer,
Those who want to learn a new way of thinking for world (system)
Those who wonder what SE is, or
…
Who can take this course
those who have experience of participating in large S/W
development process,
those who have basic knowledge in programming,
those who want to learn SE,
those who have to take qualified exam, or
…
Prolog
Who may make mistake of taking this course
those who believe this course will improve their knowledge about
computer or computer programming,
those who expect this course will improve their computer
programming skill,
those who want to learn how to implement Heuristic algorithms
for the problems in the projects they participate in,
those who believe it is quite sufficient for computer applications
(programs) to run without error,
those who hate complex approach to simple problems, and
…
Prolog
Say again,
Computer programming skill for industrial engineer
Very important! because if they have the skill, they can do much
deeper study during their research.
But this course is for (software) system engineering!
I recommend a course from Prof. Ryu, our new
professor.
Course Material
Textbook
Rumbaugh et al., Object-Oriented Modeling and Design,
Prentice-Hall, Inc., NJ, 1991
• the predecessor of UML (Unified Modeling Language)
References
Whitten, Bentley, Dittman, Systems Analysis and Design
Methods, 6th Ed., McGraw-Hill, 2004
Gamma et al., Design Patterns: Elements of Reusable ObjectOriented Software, Addison-Wesley, 1995
Course Plan
Introduction
Including Java language review
Modeling concepts
Object modeling
Dynamic modeling
Functional modeling
Design methodology
Analysis
System design
Object design
Implementation & applications
Student Evaluation
Attendance: 10%
Homework: 20%
may include java programming
Mid/final exam: 35%
Term project: 35%
Preface (in the Textbook)
An object-oriented approach to software
development based on
modeling objects from the real world
and then using the model to build a language-independent
design organized around those objects
Object-oriented modeling and design promote
better understanding of requirements
cleaner design
more maintainable (information) systems
In this course
a set of object-oriented concepts
a language-independent graphical notation
• Object Modeling Technique
Preface (in the Textbook)
Object Modeling Technique
analyze problem requirements
design a solution to the problem
implement the solution in a programming language or database
the same concepts and a notation to be used throughout the
entire software development process, does not need to translate
into a new notation at each development stage
Object-oriented technology is more than just a way
of programming
a way of thinking abstractly about a problem using real world
concepts, rather than computer concepts
Think in terms of application, not of computer!
Introduction
Object-oriented modeling and design
a new way of thinking about problems using models organized
around real-world concepts
Fundamental concept is object,
which combines both data structure and behavior in a single
entry
OOMD lifecycle
First, analysis model to abstract essential aspects of application
domain
• without regard for eventual implementation
Then, design decisions are made and details are added
Finally, design model is implemented
Object-Oriented
“Object-oriented” means
we organize software as a collection of discrete objects that
incorporate both data and behavior
Required characteristics
Identity
Classification
Polymorphism
Inheritance
Object-Oriented
Identity
Data is quantized into discrete, distinguishable entities called
objects
• e.g. a paragraph in a document, a window on my PC, white queen in
a chess game
Objects can be concrete or conceptual
• e.g. a file in a file system, a scheduling policy
Each object has its own inherent identity
• Two objects are distinct even if their attribute values (such as name
and size) are identical
Object-Oriented
Classification
Objects with the same data structure (attributes, signature, …)
and behavior (operations, methods, …) are grouped into a class
A class is an abstraction that describes properties important to an
application and ignores the rest
Each class describes a possibly infinite set of individual objects
• Each object is said to be an instance of its class
Polymorphism
The same operation may behave differently on different classes
Inheritance
The sharing of attributes and operations among classes based
on a hierarchical relationship
Object-Oriented
Anyway, what is object-oriented?
Before moving further, let’s review the object-oriented using Java
Java Programming
I recommend Eclipse for Java programming
Hello World!
First, you have to memorize!
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
System.out.println("Hello Java!");
}
}
Hello World!
Hello Java!
Java Programming Using Eclipse
Select [File – New – Java Project], enter project name,
select [Finish] button
Java Programming Using Eclipse
Select [File – New – Class], enter class name (Hello),
select [Finish] button
Java Programming Using Eclipse
Type codes and save it
Java Programming Using Eclipse
Execute by selecting run button (
)
Arithmetic Operations
Numerical and string-wide
public class Calc {
public static void main(String[] args) {
System.out.println(127.0 * 135.0 - 562.5 / 23.2);
}
}
public class StringAdd {
public static void main(String[] args) {
System.out.println("I" + " am " + "handsome");
}
}
Arithmetic Operations
Mixed form
public class StringAdd {
public static void main(String[] args) {
System.out.println("I" + 13 + 4 + "handsome");
}
}
I134handsome
Variables
Primitive types
public class Variable {
public static void main(String[] args) {
int a;
int b;
a = 2;
b = 3;
a = b;
System.out.println(a);
a = a + 5;
System.out.println(a);
}
}
Numerical Type
Integral types
byte: 8-bit, 128 to 127
short: 16-bit, 32768 to 32767
int: 32-bit, 2147483648 to 2147483647
long: 64-bit, 9223372036854775808 to
9223372036854775807
char: 16-bit, 0 to 65535
Floating-point types
float: 32-bit
double: 64-bit
Swapping Values
Wrong implementation
public class Swap {
public static void main(String[] args) {
int a = 1;
int b = 2;
b = a;
a = b;
System.out.println(a + " " + b);
}
}
Swapping Values
Correct one
public class Swap {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = a;
a = b;
b = c;
System.out.println(a + " " + b);
}
}
Arrays
A collection of values
public class Array {
public static void main(String[] args) {
int[] a = new int[3];
a[0] = 10;
a[1] = 5;
a[2] = 7;
System.out.println(a[0] + " " + a[1] + " " + a[2]);
}
}
Arrays
Using variable as reference
public class Array {
public static void main(String[] args) {
int[] a = new int[3];
a[0] = 10;
a[1] = 5;
int[] b = a;
b[2] = 7;
System.out.println(a[0] + " " + b[1] + " " + a[2]);
}
}
Arrays
Indexing using variables
public class Index {
public static void main(String[] args) {
double[] a = new double[3];
int b = 2;
a[b] = 5.5;
a[b - 1] = -3.2;
a[0] = 4.1;
System.out.println(a[b - 2] - a[1]);
}
}
Arrays
Multi-dimensional array
public class TwoDim {
public static void main(String[] args) {
int[][] a = new int[2][3];
a[0][0] = 1;
a[0][1] = 2;
a[0][2] = 3;
a[1][0] = 4;
a[1][1] = 5;
a[1][2] = 6;
System.out.println(a[1][2]);
System.out.println(a[0][1]);
}
}
Handling Text String in Java
Actually implemented by String class
public class StringClass {
public static void main(String[] args) {
String a = new String("This is string");
String b = "For simplicity";
String c = b + " " + a;
System.out.println(c);
}
}
Operations
Check leap year
public class Lunar {
public static void main(String[] args) {
int year = 2000;
boolean p = ((year % 4) == 0);
boolean q = ((year % 100) != 0);
boolean r = ((year % 400) == 0);
System.out.println((p && q) || r);
year = 2004;
p = ((year % 4) == 0);
q = ((year % 100) != 0);
r = ((year % 400) == 0);
System.out.println((p && q) || r);
}
}
User Input Processing
Check leap year by user input
public class IsLunar {
public static void main(String[] args) {
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("Input year: ");
int year = s.nextInt();
boolean p = ((year % 4) == 0);
boolean q = ((year % 100) != 0);
boolean r = ((year % 400) == 0);
System.out.println((p && q) || r);
}
}
Java API Reference (Have to Be Installed)
HW1: Sum from n to m
Run sample
Input n: 8
Input m which is more than 8: 10
Sum from 8 to 10 is 27.
For every HW, send e-mail to me by one day before
the next lecture
Control Flow
If statement
public class EvenOdd {
public static void main(String[] args) {
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("Input an integer: ");
int a = s.nextInt();
if ((a % 2) == 0) {
System.out.println(a + " is an even number.");
} else {
System.out.println(a + " is an odd number.");
}
}
}
Control Flow
Nested if statements
public class Score {
public static void main(String[] args) {
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("Your points? ");
int points = s.nextInt();
if (points > 80) {
if (points == 100) {
System.out.println("A");
} else {
System.out.println("B");
}
} else {
System.out.println("F");
}
}
}
Control Flow
for statement
public class Gugu {
public static void main(String[] args) {
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("For what? ");
int n = s.nextInt();
for (int i = 1; i <= 9; i++) {
System.out.println(n + " * " + i + " = " + n * i);
}
}
}
Control Flow
while statement
public class Binary {
public static void main(String[] args) {
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("Input decimal number: ");
int n = s.nextInt();
int[] digits = new int[32];
int i = 0;
while (n > 0) {
digits[i] = n % 2;
n = n / 2;
i++;
}
for (int j = i - 1; j >= 0; j--) {
System.out.print(digits[j]);
}
}
}
HW2: Displaying Diamonds
Write code of displaying diamonds as follows
Height? 3
Number? 4
*
*
*
*
***
***
***
***
***** ***** ***** *****
***
***
***
***
*
*
*
*
Height? 5
Number? 2
*
*
***
***
*****
*****
*******
*******
********* *********
*******
*******
*****
*****
***
***
*
*