Upload
nohyun-kee
View
632
Download
1
Embed Size (px)
DESCRIPTION
객체지향 프로그래밍 개요
Citation preview
1
작성자 : 기노현
작성부서 : 정보기술연구소
이메일 : [email protected]
전화 /팩스 : 062-653-2879 / 062-676-4869
2014 년 5 월 14 일
객체지향 프로그래밍객체지향 프로그래밍(Object Oriented Programming)(Object Oriented Programming)
2 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민
• 좋은 소프트웨어란 ?– 사용자의 요구사양이 정확하게 반영되어 있어야 한다 .
– 소프트웨어에 포함되어 있는 잠재적인 에러가 가능한 적어야한다 .
– 개발비용 이내에 만들어져야 한다 .
– 개발된 소프트웨어는 운영하기 쉽고 유지보수가 쉬워야 한다 .
– 안전성 (Safety) 과 보안성 (Security) 이 높아야 한다 .
– 시간과 자원 효율이 좋아야 한다 .
– 소프트웨어의 구성이나 설계구조가 알기 쉬워야 한다 .
– 소프트웨어는 검사하기가 쉬워야 한다 .
– 소프트웨어와 관련된 고품질의 문서가 존재해야 한다 .
OOP OOP 개요개요
3 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민
• 좋은 소프트웨어란 ?
OOP OOP 개요개요
고객이 원하는 기능을 제공하는소프트웨어
고객이 원하는 기능을 제공하는소프트웨어
객체지향 기본 원리를 통한유연한 소프트웨어
객체지향 기본 원리를 통한유연한 소프트웨어
유지보수와 재사용이 쉬운소프트웨어
유지보수와 재사용이 쉬운소프트웨어
4 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• Good Software 인증시 평가 항목
5 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• 어떤 코드로 작성
[ 메뉴영역 ]
메뉴 1
메뉴 2
[ 공통버튼 영역 ]
[ 화면 영역 ]
버튼 1
6 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• 디자인 1
시작
메뉴 1 실행 ?
메뉴 2 실행 ?
버튼 1 실행 ?
버튼 2 실행 ?
버튼 1 실행 ?
화면 표시
화면 표시
화면 표시
끝
메뉴와 버튼이 추가될 경우계속 반복되는 코드 추가로 코드가 지저분해짐
Applicat ion1
-changeUIToMenu1()-changeUIToMenu2()-processButton1WhenMenu1()-processButton2WhenMenu1()-processButton1WhenMenu2()-processButton2WhenMenu2()
7 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• 디자인 2
Applicat ion
-currentScreenUIScreenUI
<< interface>>
+show()+handleButton1Click()+handleButton2Click()
Menu1ScreenUI
+show()+handleButton1Click()+handleButton2Click()
Menu2ScreenUI
+show()+handleButton1Click()+handleButton2Click()
메뉴가 추가될 경우에도인터페이스를 구현하는 클래스만 추가하면 됨
8 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• 절차 (Procedual) 지향
데이터데이터 데이터데이터
데이터데이터 데이터데이터
프로시저프로시저
프로시저프로시저
프로시저프로시저
프로시저프로시저
9 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• 객체 (Object) 지향
객체
프로시저프로시저
데이터데이터
객체
프로시저프로시저
데이터데이터
객체
프로시저프로시저
데이터데이터객체
프로시저프로시저
데이터데이터
10 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• 객체지향 언어 시초– 객체 지향 언어의 시초는 1960 년 노위지안 컴퓨팅 센터의 조한 달과 크리스틴이 발표한 시뮬라 67이
다 . 시뮬라 67이 채택하고 있는 가장 중요한 개념은 클래스의 도입으로서 이 아이디어는 스몰토크 , C++ 등에도 사용되었다 . 하지만 시뮬라 67의 발표 이후 10 여년 간 객체 지향 언어는 전혀 주목을 받지 못하였다 . 1970 년 컴퓨터 산업을 주도한 IBM, AT&T, 미 국방성 등에서 관심을 두지 않았기 때문에 시뮬라 67은 실용적인 언어로 발전하지는 못하였다 . 하지만 이의 학문적 가치는 인정받고 있다 .
• 구성 요소– 클래스 (Class) : 같은 종류 (또는 문제 해결을 위한 )의 집단에 속하는 속성 (attribute) 과 행위
(behavior) 를 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형 (user define data type) 이라고 할 수 있다 . 클래스는 프로그래머가 아니지만 해결해야 할 문제가 속하는 영역에 종사하는 사람이라면 사용할 수 있고 , 다른 클래스 또는 외부 요소와 독립적으로 디자인하여야 한다 .
– 객체 (Object) : 클래스의 인스턴스 (실제로 메모리상에 할당된 것 )이다 . 객체는 자신 고유의 속성(attribute) 을 가지며 클래스에서 정의한 행위 (behavior) 를 수행할 수 있다 . 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용한다 .
– 메서드 (Method), 메시지 (Message) : 클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지라 할 수 있다 . 메서드는 한 객체의 서브루틴 (subroutine) 형태로 객체의 속성을 조작하는 데 사용된다 . 또 객체 간의 통신은 메시지를 통해 이루어진다 .
11 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• 특징– 은닉성 : 자료 추상화
• 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것이다 . 자료 추상화를 통해 정의된 자료형을 추상 자료형이라고 한다 . 추상 자료형은 자료형의 자료 표현과 자료형의 연산을 캡슐화한 것으로 접근 제어를 통해서 자료형의 정보를 은닉할 수 있다 . 객체 지향 프로그래밍에서 일반적으로 추상 자료형을 클래스 , 추상 자료형의 인스턴스를 객체 , 추상 자료형에서 정의된 연산을 메소드 , 메소드의 호출을 메시지라고 한다.
– 상속성• 새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능이다 . 상속을 받는 새로운 클래스를 부
클래스 , 파생 클래스 , 하위 클래스 , 자식 클래스라고 하며 새로운 클래스가 상속한 기존의 클래스를 기반 클래스 , 상위 클래스 , 부모 클래스라고 한다 . 상속을 통해서 기존의 클래스를 상속받은 하위 클래스를 이용해 프로그램의 요구에 맞추어 클래스를 수정할 수 있고 클래스 간의 종속 관계를 형성함으로써 객체를 조직화시킬 수 있다.
• 다중 상속은 클래스가 2개 이상의 클래스로부터 상속받을 수 있게 하는 기능이다 . 클래스들의 기능이 동시에 필요할 때 용이하나 클래스의 상속 관계에 혼란을 줄 수 있고 (예 : 다이아몬드 상속 ) 프로그래밍 언어에 따라 사용 가능 유무가 다르므로 주의해서 사용해야 한다 . JAVA 는 지원하지 않는다 .
12 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• 특징– 다형성
• 어떤 한 요소에 여러 개념을 넣어 놓는 것으로 일반적으로 오버라이딩 ( 같은 이름의 메소드가 여러 클래스에서 다른 기능을 하는 것 )이나 오버로딩 ( 같은 이름의 메소드가 인자의 갯수나 자료형에 따라서 다른 기능을 하는 것 )을 의미한다 . 다형 개념을 통해서 프로그램 안의 객체 간의 관계를 조직적으로 나타낼 수 있다 .
13 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• 추상화 (abstraction) 하고 정제 (refinement) 하는 과정– 추상화 : 내부의 복잡한 사실들을 감추고 이해하기 쉽도록 단순화하는 것
– 정제 : 추상화된 사실의 내부를 펼치는 것
• 모델링 (modeling)– 모델 : 실체의 단순화 (simplication of reality)
– 실제 업무의 추상화 과정
– 시스템 설계자와 사용자 사이의 의사소통 용이public class Customer {
private String name;
public String getName() {
}
public void setName(String s) {
}
}
Cust om er
-name: String
+ getName(): String+ setName(String s): void
14 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• UML (unified modeling language)– 시스템을 시각화하고 명세화하고 구축하고 문서를 작성하는데 사용하는 그래픽으로 표현되는 언어
– 작성 프로그램 : Rational Rose, Together, StarUML ( 무료 )
15 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 OOP OOP 개요개요
• 객체지향 개발 프로세스
16 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 클래스 개요클래스 개요
• 클래스 (Class) : 객체에 대한 추상화 작업의 결과
클래스명
특성
행위 ()
17 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 클래스 개요클래스 개요
• 객체 (Object) : 클래스를 기반으로 생성 (instance)
객체명 :클래스명클래스명
특성
행위 ()
[Java]
Car myCar = new Car();
[C#]
Car myCar = new Car();
[VB.Net]
Dim myCar As new Car();
myCar: Car
18 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 클래스 개요클래스 개요
• Date 클래스– 멤버변수 정의
– 생성자 정의
– 소멸자 정의 : 딱히 할 일 없음 .
– 객체 생성
class Date {
int year;
int month;
int day;
Date() {
year = month = day = 1;
}
Date(int yy, int mm, int dd) {
year = yy;
month = mm;
day = dd;
}
protected void finalize() throws Throwable {
super.finalize(); // 자바}
protected override void Finalize() { //C#
try { } finally { base.Finalize(); }
}
}
Date myDate = new (2013, 3, 18);
Date yourDate = new (2013, 2, 18);
19 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 클래스 개요클래스 개요
• 접근자– private
– public
public class Car {
private int body;
private int engine;
private int steering;
private int transmission;
private int wheel;
public void start() {
}
public void stop() {
}
public void accelerate() {
}
public void slowDown() {
}
public void turnLeft() {
}
public void turnRight() {
}
}
20 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 클래스 개요클래스 개요
• 객체 (Object)– 객체의 핵심은 기능을 제공하는 것
• 스피커 : 소리 크게 , 소리 작게 , 음소거
– 인터페이스 : 객체가 제공하는 모든 오퍼레이션 집합• 기능 식별 이름
• 파라미터 및 파라미터 타입
• 기능 실행 결과 값
– 메시지 : 객체에게 오퍼레이션의 실행을 요청하는 것
• 의존 – 한 객체가 다른 객체를 이용하는 것
– 의존하는 클래스가 변경되면 다른 클래스에 영향을 미친다 .
• 캡슐화– 회원 (Member) 만료 여부 확인 (isExpire) 처리
• 절차지향 방법 : 직접 만료일자로 조회 (if ( 현재 일자 < 만료 일자 ) …)
• 객체지향 방법 : 회원 클래스에서 만료여부 확인 오퍼레이션 제공 (member.isExpire())
– 신문배달부 (Papyerboy) 와 고객 (Customer) 의 지갑 (Wallet)• 신문배달부가 고객의 지갑에서 신문값을 가져온다 ? 고객이 지불한다 !
A 클래스 B 클래스 C 클래스
21 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 객체지향 설계객체지향 설계
• 객체지향 설계 과정– 제공해야 할 기능을 찾고 또는 세분화하고 , 그 기능에 알맞은 객체에 할당한다 .
• 기능을 구현하는데 필요한 데이터를 객체에 추가한다 .
• 기능은 최대한 캡슐화해서 구현한다 .
– 객체 간에 어떻게 메시지를 주고받을지 결정한다 .
– 위의 과정을 지속적으로 반복한다 .
• 객체지향 설계 원칙 : SOLID– 단일 책임 원칙 (Single Responsibility Principle) : 오선근 3/20
– 개방 폐쇄 원칙 (Open-Closed Principle) : 김용철 3/20
– 리스코프 치환 원칙 (Liskov Substitution Principle) : 김순형 3/20
– 인터페이스 분리 원칙 (Interface Segregation Principle) : 정재곤 3/25
– 의존 역전 원칙 (Dependency Inversion Principle) : 김미선 3/25
22 광주광역시 남구 진월동 314-7 전화 /팩스 : 062-653-2879 / 062-676-4869 홈페이지 : http://www.comin.com
정직한 기업 , 공부하는 사원 , 발전하는 가민 참고 서적참고 서적