SlideShare a Scribd company logo
1 of 22
1
작성자 : 기노현
작성부서 : 정보기술연구소
이메일 : nhkee@comin.com
전화 / 팩스 : 062-653-2879 / 062-676-
4869
2014 년 5 월 14 일
객체지향 프로그래밍객체지향 프로그래밍
(Object Oriented Programming)(Object Oriented Programming)
2광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
• 좋은 소프트웨어란 ?
– 사용자의 요구사양이 정확하게 반영되어 있어야 한다 .
– 소프트웨어에 포함되어 있는 잠재적인 에러가 가능한 적어야한다 .
– 개발비용 이내에 만들어져야 한다 .
– 개발된 소프트웨어는 운영하기 쉽고 유지보수가 쉬워야 한다 .
– 안전성 (Safety) 과 보안성 (Security) 이 높아야 한다 .
– 시간과 자원 효율이 좋아야 한다 .
– 소프트웨어의 구성이나 설계구조가 알기 쉬워야 한다 .
– 소프트웨어는 검사하기가 쉬워야 한다 .
– 소프트웨어와 관련된 고품질의 문서가 존재해야 한다 .
OOPOOP 개요개요
3광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
• 좋은 소프트웨어란 ?
OOPOOP 개요개요
고객이 원하는 기능을 제공하는
소프트웨어
고객이 원하는 기능을 제공하는
소프트웨어
객체지향 기본 원리를 통한
유연한 소프트웨어
객체지향 기본 원리를 통한
유연한 소프트웨어
유지보수와 재사용이 쉬운
소프트웨어
유지보수와 재사용이 쉬운
소프트웨어
4광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• Good Software 인증시 평가 항목
5광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• 어떤 코드로 작성
[ 메뉴영역 ]
메뉴 1
메뉴 2
[ 공통버튼 영역 ]
[ 화면 영역 ]
버튼 1
6광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• 디자인 1
시작
메뉴 1 실행 ?
메뉴 2 실행 ?
버튼 1 실행 ?
버튼 2 실행 ?
버튼 1 실행 ?
화면 표시
화면 표시
화면 표시
끝
메뉴와 버튼이 추가될 경우
계속 반복되는 코드 추가로
코드가 지저분해짐
Applicat ion1
-changeUIToMenu1()
-changeUIToMenu2()
-processButton1WhenMenu1()
-processButton2WhenMenu1()
-processButton1WhenMenu2()
-processButton2WhenMenu2()
7광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• 디자인 2
Applicat ion
-currentScreenUI
ScreenUI
<<interface>>
+show()
+handleButton1Click()
+handleButton2Click()
Menu1ScreenUI
+show()
+handleButton1Click()
+handleButton2Click()
Menu2ScreenUI
+show()
+handleButton1Click()
+handleButton2Click()
메뉴가 추가될 경우에도
인터페이스를 구현하는
클래스만 추가하면 됨
8광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• 절차 (Procedual) 지향
데이터데이터 데이터데이터
데이터데이터 데이터데이터
프로시저프로시저
프로시저프로시저
프로시저프로시저
프로시저프로시저
9광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• 객체 (Object) 지향
객체
프로시저프로시저
데이터데이터
객체
프로시저프로시저
데이터데이터
객체
프로시저프로시저
데이터데이터
객체
프로시저프로시저
데이터데이터
10광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• 객체지향 언어 시초
– 객체 지향 언어의 시초는 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 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• 특징
– 은닉성 : 자료 추상화
• 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것이다 . 자료 추상화를 통해 정
의된 자료형을 추상 자료형이라고 한다 . 추상 자료형은 자료형의 자료 표현과 자료형의 연산을 캡슐화한 것으로
접근 제어를 통해서 자료형의 정보를 은닉할 수 있다 . 객체 지향 프로그래밍에서 일반적으로 추상 자료형을 클래
스 , 추상 자료형의 인스턴스를 객체 , 추상 자료형에서 정의된 연산을 메소드 , 메소드의 호출을 메시지라고 한다
.
– 상속성
• 새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능이다 . 상속을 받는 새로운 클래스를 부
클래스 , 파생 클래스 , 하위 클래스 , 자식 클래스라고 하며 새로운 클래스가 상속한 기존의 클래스를 기반 클래
스 , 상위 클래스 , 부모 클래스라고 한다 . 상속을 통해서 기존의 클래스를 상속받은 하위 클래스를 이용해 프로
그램의 요구에 맞추어 클래스를 수정할 수 있고 클래스 간의 종속 관계를 형성함으로써 객체를 조직화시킬 수 있다
.
• 다중 상속은 클래스가 2 개 이상의 클래스로부터 상속받을 수 있게 하는 기능이다 . 클래스들의 기능이 동시에 필
요할 때 용이하나 클래스의 상속 관계에 혼란을 줄 수 있고 ( 예 : 다이아몬드 상속 ) 프로그래밍 언어에 따라 사용
가능 유무가 다르므로 주의해서 사용해야 한다 . JAVA 는 지원하지 않는다 .
12광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• 특징
– 다형성
• 어떤 한 요소에 여러 개념을 넣어 놓는 것으로 일반적으로 오버라이딩 ( 같은 이름의 메소드가 여러 클래스에서 다
른 기능을 하는 것 ) 이나 오버로딩 ( 같은 이름의 메소드가 인자의 갯수나 자료형에 따라서 다른 기능을 하는 것 )
을 의미한다 . 다형 개념을 통해서 프로그램 안의 객체 간의 관계를 조직적으로 나타낼 수 있다 .
13광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• 추상화 (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 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• UML (unified modeling language)
– 시스템을 시각화하고 명세화하고 구축하고 문서를 작성하는데 사용하는 그래픽으로 표현되는 언어
– 작성 프로그램 : Rational Rose, Together, StarUML ( 무료 )
15광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
OOPOOP 개요개요
• 객체지향 개발 프로세스
16광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
클래스 개요클래스 개요
• 클래스 (Class) : 객체에 대한 추상화 작업의 결과
클래스명
특성
행위 ()
17광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
클래스 개요클래스 개요
• 객체 (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 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
클래스 개요클래스 개요
• 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 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
클래스 개요클래스 개요
• 접근자
– 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 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
클래스 개요클래스 개요
• 객체 (Object)
– 객체의 핵심은 기능을 제공하는 것
• 스피커 : 소리 크게 , 소리 작게 , 음소거
– 인터페이스 : 객체가 제공하는 모든 오퍼레이션 집합
• 기능 식별 이름
• 파라미터 및 파라미터 타입
• 기능 실행 결과 값
– 메시지 : 객체에게 오퍼레이션의 실행을 요청하는 것
• 의존
– 한 객체가 다른 객체를 이용하는 것
– 의존하는 클래스가 변경되면 다른 클래스에 영향을 미친다 .
• 캡슐화
– 회원 (Member) 만료 여부 확인 (isExpire) 처리
• 절차지향 방법 : 직접 만료일자로 조회 (if ( 현재 일자 < 만료 일자 ) …)
• 객체지향 방법 : 회원 클래스에서 만료여부 확인 오퍼레이션 제공 (member.isExpire())
– 신문배달부 (Papyerboy) 와 고객 (Customer) 의 지갑 (Wallet)
• 신문배달부가 고객의 지갑에서 신문값을 가져온다 ? 고객이 지불한다 !
A 클래스 B 클래스 C 클래스
21광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
객체지향 설계객체지향 설계
• 객체지향 설계 과정
– 제공해야 할 기능을 찾고 또는 세분화하고 , 그 기능에 알맞은 객체에 할당한다 .
• 기능을 구현하는데 필요한 데이터를 객체에 추가한다 .
• 기능은 최대한 캡슐화해서 구현한다 .
– 객체 간에 어떻게 메시지를 주고받을지 결정한다 .
– 위의 과정을 지속적으로 반복한다 .
• 객체지향 설계 원칙 : 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 홈페이지 :
정직한 기업 , 공부하는 사원 , 발전하는 가
민
참고 서적참고 서적

More Related Content

What's hot

프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정중선 곽
 
자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조중선 곽
 
SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프Younghan Kim
 
Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조Younghan Kim
 
Ds4 artist week_10
Ds4 artist week_10Ds4 artist week_10
Ds4 artist week_10SeungBum Kim
 
Java programming pdf
Java programming pdfJava programming pdf
Java programming pdfJi Hoon Lee
 
Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑Younghan Kim
 
엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613Yong Joon Moon
 
엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612Yong Joon Moon
 
파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기Yong Joon Moon
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11hungrok
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)중선 곽
 
MyBatis에서 JPA로
MyBatis에서 JPA로MyBatis에서 JPA로
MyBatis에서 JPA로Dongmin Shin
 
파이썬 파일처리 이해하기
파이썬 파일처리 이해하기파이썬 파일처리 이해하기
파이썬 파일처리 이해하기Yong Joon Moon
 
튜터링자료 1.adt
튜터링자료 1.adt튜터링자료 1.adt
튜터링자료 1.adt익범 전
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403Yong Joon Moon
 
ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정Javajigi Jaesung
 

What's hot (20)

프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정
 
자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조
 
Communism OOP
Communism OOPCommunism OOP
Communism OOP
 
SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프
 
Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조
 
Java extends
Java extendsJava extends
Java extends
 
Ds4 artist week_10
Ds4 artist week_10Ds4 artist week_10
Ds4 artist week_10
 
Java programming pdf
Java programming pdfJava programming pdf
Java programming pdf
 
Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑
 
엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613
 
엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612
 
파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
 
MyBatis에서 JPA로
MyBatis에서 JPA로MyBatis에서 JPA로
MyBatis에서 JPA로
 
메이크챗봇 자연어기초
메이크챗봇 자연어기초메이크챗봇 자연어기초
메이크챗봇 자연어기초
 
파이썬 파일처리 이해하기
파이썬 파일처리 이해하기파이썬 파일처리 이해하기
파이썬 파일처리 이해하기
 
튜터링자료 1.adt
튜터링자료 1.adt튜터링자료 1.adt
튜터링자료 1.adt
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403
 
ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정
 

Viewers also liked

Backing the Right Domain for International SEO Success
Backing the Right Domain for International SEO SuccessBacking the Right Domain for International SEO Success
Backing the Right Domain for International SEO SuccessLatitude Digital Marketing
 
Team #4 our pres
Team #4 our presTeam #4 our pres
Team #4 our presbvt3036
 
договор за наем жоро гиков
договор за наем жоро гиковдоговор за наем жоро гиков
договор за наем жоро гиковMariq Ivanova
 
№1 создание спортивно оздоровительного комплекса в залесье
№1 создание спортивно оздоровительного комплекса в залесье№1 создание спортивно оздоровительного комплекса в залесье
№1 создание спортивно оздоровительного комплекса в залесьеZalesskaya_talaka
 
№9 компьютерная азбука
№9 компьютерная азбука№9 компьютерная азбука
№9 компьютерная азбукаZalesskaya_talaka
 
Green energy final presentation 2
Green energy final presentation 2Green energy final presentation 2
Green energy final presentation 2bvt3036
 
Realities of Bangladesh: Requisites and Prerequisites for Sustainable Develop...
Realities of Bangladesh: Requisites and Prerequisites for Sustainable Develop...Realities of Bangladesh: Requisites and Prerequisites for Sustainable Develop...
Realities of Bangladesh: Requisites and Prerequisites for Sustainable Develop...aminur rahman
 
Santa Clara University Annual Report 2015
Santa Clara University Annual Report 2015Santa Clara University Annual Report 2015
Santa Clara University Annual Report 2015Kirk Donnan
 

Viewers also liked (11)

Backing the Right Domain for International SEO Success
Backing the Right Domain for International SEO SuccessBacking the Right Domain for International SEO Success
Backing the Right Domain for International SEO Success
 
Team #4 our pres
Team #4 our presTeam #4 our pres
Team #4 our pres
 
Balonku
BalonkuBalonku
Balonku
 
договор за наем жоро гиков
договор за наем жоро гиковдоговор за наем жоро гиков
договор за наем жоро гиков
 
ONB2 Smartpitch 2014
ONB2 Smartpitch 2014ONB2 Smartpitch 2014
ONB2 Smartpitch 2014
 
№1 создание спортивно оздоровительного комплекса в залесье
№1 создание спортивно оздоровительного комплекса в залесье№1 создание спортивно оздоровительного комплекса в залесье
№1 создание спортивно оздоровительного комплекса в залесье
 
№9 компьютерная азбука
№9 компьютерная азбука№9 компьютерная азбука
№9 компьютерная азбука
 
Green energy final presentation 2
Green energy final presentation 2Green energy final presentation 2
Green energy final presentation 2
 
Homeopatiq
HomeopatiqHomeopatiq
Homeopatiq
 
Realities of Bangladesh: Requisites and Prerequisites for Sustainable Develop...
Realities of Bangladesh: Requisites and Prerequisites for Sustainable Develop...Realities of Bangladesh: Requisites and Prerequisites for Sustainable Develop...
Realities of Bangladesh: Requisites and Prerequisites for Sustainable Develop...
 
Santa Clara University Annual Report 2015
Santa Clara University Annual Report 2015Santa Clara University Annual Report 2015
Santa Clara University Annual Report 2015
 

Similar to [강의] OOP 개요

3팀_객체지향 프로그래밍.pptx
3팀_객체지향 프로그래밍.pptx3팀_객체지향 프로그래밍.pptx
3팀_객체지향 프로그래밍.pptxssuser642b19
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론JeongDong Kim
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?주식회사 내일비
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?Sang-ho Choi
 
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 uEngine Solutions
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용중선 곽
 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Androidtaeinkim6
 
[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern대영 노
 
진민완 포트폴리오
진민완 포트폴리오진민완 포트폴리오
진민완 포트폴리오민완 진
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 
예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기수보 김
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다이상한모임
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스Hee Jae Lee
 
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다Evion Kim
 
분석과 설계
분석과 설계분석과 설계
분석과 설계Haeil Yi
 
포트폴리오 김규하
포트폴리오 김규하포트폴리오 김규하
포트폴리오 김규하GyooHa Kim
 
객체지향 프로그래밍.pptx
객체지향 프로그래밍.pptx객체지향 프로그래밍.pptx
객체지향 프로그래밍.pptxssuser9eebcf
 

Similar to [강의] OOP 개요 (20)

3팀_객체지향 프로그래밍.pptx
3팀_객체지향 프로그래밍.pptx3팀_객체지향 프로그래밍.pptx
3팀_객체지향 프로그래밍.pptx
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론
 
Uml 세미나
Uml 세미나Uml 세미나
Uml 세미나
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
 
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Android
 
애자일의 모든것
애자일의 모든것애자일의 모든것
애자일의 모든것
 
[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern
 
진민완 포트폴리오
진민완 포트폴리오진민완 포트폴리오
진민완 포트폴리오
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
 
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
 
분석과 설계
분석과 설계분석과 설계
분석과 설계
 
포트폴리오 김규하
포트폴리오 김규하포트폴리오 김규하
포트폴리오 김규하
 
객체지향 프로그래밍.pptx
객체지향 프로그래밍.pptx객체지향 프로그래밍.pptx
객체지향 프로그래밍.pptx
 

[강의] OOP 개요

  • 1. 1 작성자 : 기노현 작성부서 : 정보기술연구소 이메일 : nhkee@comin.com 전화 / 팩스 : 062-653-2879 / 062-676- 4869 2014 년 5 월 14 일 객체지향 프로그래밍객체지향 프로그래밍 (Object Oriented Programming)(Object Oriented Programming)
  • 2. 2광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 • 좋은 소프트웨어란 ? – 사용자의 요구사양이 정확하게 반영되어 있어야 한다 . – 소프트웨어에 포함되어 있는 잠재적인 에러가 가능한 적어야한다 . – 개발비용 이내에 만들어져야 한다 . – 개발된 소프트웨어는 운영하기 쉽고 유지보수가 쉬워야 한다 . – 안전성 (Safety) 과 보안성 (Security) 이 높아야 한다 . – 시간과 자원 효율이 좋아야 한다 . – 소프트웨어의 구성이나 설계구조가 알기 쉬워야 한다 . – 소프트웨어는 검사하기가 쉬워야 한다 . – 소프트웨어와 관련된 고품질의 문서가 존재해야 한다 . OOPOOP 개요개요
  • 3. 3광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 • 좋은 소프트웨어란 ? OOPOOP 개요개요 고객이 원하는 기능을 제공하는 소프트웨어 고객이 원하는 기능을 제공하는 소프트웨어 객체지향 기본 원리를 통한 유연한 소프트웨어 객체지향 기본 원리를 통한 유연한 소프트웨어 유지보수와 재사용이 쉬운 소프트웨어 유지보수와 재사용이 쉬운 소프트웨어
  • 4. 4광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • Good Software 인증시 평가 항목
  • 5. 5광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • 어떤 코드로 작성 [ 메뉴영역 ] 메뉴 1 메뉴 2 [ 공통버튼 영역 ] [ 화면 영역 ] 버튼 1
  • 6. 6광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • 디자인 1 시작 메뉴 1 실행 ? 메뉴 2 실행 ? 버튼 1 실행 ? 버튼 2 실행 ? 버튼 1 실행 ? 화면 표시 화면 표시 화면 표시 끝 메뉴와 버튼이 추가될 경우 계속 반복되는 코드 추가로 코드가 지저분해짐 Applicat ion1 -changeUIToMenu1() -changeUIToMenu2() -processButton1WhenMenu1() -processButton2WhenMenu1() -processButton1WhenMenu2() -processButton2WhenMenu2()
  • 7. 7광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • 디자인 2 Applicat ion -currentScreenUI ScreenUI <<interface>> +show() +handleButton1Click() +handleButton2Click() Menu1ScreenUI +show() +handleButton1Click() +handleButton2Click() Menu2ScreenUI +show() +handleButton1Click() +handleButton2Click() 메뉴가 추가될 경우에도 인터페이스를 구현하는 클래스만 추가하면 됨
  • 8. 8광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • 절차 (Procedual) 지향 데이터데이터 데이터데이터 데이터데이터 데이터데이터 프로시저프로시저 프로시저프로시저 프로시저프로시저 프로시저프로시저
  • 9. 9광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • 객체 (Object) 지향 객체 프로시저프로시저 데이터데이터 객체 프로시저프로시저 데이터데이터 객체 프로시저프로시저 데이터데이터 객체 프로시저프로시저 데이터데이터
  • 10. 10광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • 객체지향 언어 시초 – 객체 지향 언어의 시초는 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. 11광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • 특징 – 은닉성 : 자료 추상화 • 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것이다 . 자료 추상화를 통해 정 의된 자료형을 추상 자료형이라고 한다 . 추상 자료형은 자료형의 자료 표현과 자료형의 연산을 캡슐화한 것으로 접근 제어를 통해서 자료형의 정보를 은닉할 수 있다 . 객체 지향 프로그래밍에서 일반적으로 추상 자료형을 클래 스 , 추상 자료형의 인스턴스를 객체 , 추상 자료형에서 정의된 연산을 메소드 , 메소드의 호출을 메시지라고 한다 . – 상속성 • 새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능이다 . 상속을 받는 새로운 클래스를 부 클래스 , 파생 클래스 , 하위 클래스 , 자식 클래스라고 하며 새로운 클래스가 상속한 기존의 클래스를 기반 클래 스 , 상위 클래스 , 부모 클래스라고 한다 . 상속을 통해서 기존의 클래스를 상속받은 하위 클래스를 이용해 프로 그램의 요구에 맞추어 클래스를 수정할 수 있고 클래스 간의 종속 관계를 형성함으로써 객체를 조직화시킬 수 있다 . • 다중 상속은 클래스가 2 개 이상의 클래스로부터 상속받을 수 있게 하는 기능이다 . 클래스들의 기능이 동시에 필 요할 때 용이하나 클래스의 상속 관계에 혼란을 줄 수 있고 ( 예 : 다이아몬드 상속 ) 프로그래밍 언어에 따라 사용 가능 유무가 다르므로 주의해서 사용해야 한다 . JAVA 는 지원하지 않는다 .
  • 12. 12광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • 특징 – 다형성 • 어떤 한 요소에 여러 개념을 넣어 놓는 것으로 일반적으로 오버라이딩 ( 같은 이름의 메소드가 여러 클래스에서 다 른 기능을 하는 것 ) 이나 오버로딩 ( 같은 이름의 메소드가 인자의 갯수나 자료형에 따라서 다른 기능을 하는 것 ) 을 의미한다 . 다형 개념을 통해서 프로그램 안의 객체 간의 관계를 조직적으로 나타낼 수 있다 .
  • 13. 13광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • 추상화 (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. 14광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • UML (unified modeling language) – 시스템을 시각화하고 명세화하고 구축하고 문서를 작성하는데 사용하는 그래픽으로 표현되는 언어 – 작성 프로그램 : Rational Rose, Together, StarUML ( 무료 )
  • 15. 15광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 OOPOOP 개요개요 • 객체지향 개발 프로세스
  • 16. 16광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 클래스 개요클래스 개요 • 클래스 (Class) : 객체에 대한 추상화 작업의 결과 클래스명 특성 행위 ()
  • 17. 17광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 클래스 개요클래스 개요 • 객체 (Object) : 클래스를 기반으로 생성 (instance) 객체명 : 클래스명 클래스명 특성 행위 () [Java] Car myCar = new Car(); [C#] Car myCar = new Car(); [VB.Net] Dim myCar As new Car(); myCar: Car
  • 18. 18광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 클래스 개요클래스 개요 • 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. 19광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 클래스 개요클래스 개요 • 접근자 – 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. 20광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 클래스 개요클래스 개요 • 객체 (Object) – 객체의 핵심은 기능을 제공하는 것 • 스피커 : 소리 크게 , 소리 작게 , 음소거 – 인터페이스 : 객체가 제공하는 모든 오퍼레이션 집합 • 기능 식별 이름 • 파라미터 및 파라미터 타입 • 기능 실행 결과 값 – 메시지 : 객체에게 오퍼레이션의 실행을 요청하는 것 • 의존 – 한 객체가 다른 객체를 이용하는 것 – 의존하는 클래스가 변경되면 다른 클래스에 영향을 미친다 . • 캡슐화 – 회원 (Member) 만료 여부 확인 (isExpire) 처리 • 절차지향 방법 : 직접 만료일자로 조회 (if ( 현재 일자 < 만료 일자 ) …) • 객체지향 방법 : 회원 클래스에서 만료여부 확인 오퍼레이션 제공 (member.isExpire()) – 신문배달부 (Papyerboy) 와 고객 (Customer) 의 지갑 (Wallet) • 신문배달부가 고객의 지갑에서 신문값을 가져온다 ? 고객이 지불한다 ! A 클래스 B 클래스 C 클래스
  • 21. 21광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 객체지향 설계객체지향 설계 • 객체지향 설계 과정 – 제공해야 할 기능을 찾고 또는 세분화하고 , 그 기능에 알맞은 객체에 할당한다 . • 기능을 구현하는데 필요한 데이터를 객체에 추가한다 . • 기능은 최대한 캡슐화해서 구현한다 . – 객체 간에 어떻게 메시지를 주고받을지 결정한다 . – 위의 과정을 지속적으로 반복한다 . • 객체지향 설계 원칙 : 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. 22광주광역시 남구 진월동 314-7 전화 / 팩스 : 062-653-2879 / 062-676-4869 홈페이지 : 정직한 기업 , 공부하는 사원 , 발전하는 가 민 참고 서적참고 서적