목차
1. 객체 지향이란?
2. 객체 지향 프로그램 방법의 변화
3. 객체 지향 프로그램의 장ㆍ단점
4. 객체 지향 분석기법
5. 소프트웨어의 재사용과 독립성
6. 객체, 클래스, 메소드
7. 상 속(Inheritance)
8. 동적 바인딩
9. C++
10. smalltalk
11. Smalltalk-80 문법
12. Smalltalk 프로그래밍
13. 객체 지향 언어 설계 문제
14. 참고 문헌 / 사이트
2. 객체 지향 프로그램 방법의 변화
3. 객체 지향 프로그램의 장ㆍ단점
4. 객체 지향 분석기법
5. 소프트웨어의 재사용과 독립성
6. 객체, 클래스, 메소드
7. 상 속(Inheritance)
8. 동적 바인딩
9. C++
10. smalltalk
11. Smalltalk-80 문법
12. Smalltalk 프로그래밍
13. 객체 지향 언어 설계 문제
14. 참고 문헌 / 사이트
본문내용
지 종류로 구분
수치상수 : 15.3(10진 상수), 2r101011(2진 상수) ...
문자상수 : $=, $A ...
심벌상수 : #asOrderedCollection, #at : put ...
배열상수 : #(3 seven), #(‘read’, ‘yellow’, ‘blue’) ...
2. 변 수 : 다른 언어의 변수와 같지만 자료형이 없으므로 변수의 형이 없다. 따라서, 동적 자료형 검사를|하여야 한다.
(예)
abc <- 3
abc <- "ABC"
a<- b <- C + 1
3. 메시지식
(형식)
<메시지식> ::= <수신자><메시지>
<메시지> ::= <메시지 선택자>[<메시지 인수>]
(종류)
단항 메시지식 <수신자><단항 선택자>
이항 메시지식 <수신자><이항 선택자>
예약어 메시지식 <수신자><예약어 메시지>
연결 메시지식 {<수신자><메시지>;}
4. 블럭[<문>]의 꼴
<문> ::= {<식>.}*
블록의 인수
[:인수1...:인수n|문] value : 실인수1...value : 실인수n
5. 수 식 : 수식은 객체의 메시지로 구성
㈀. 리터널, 변수, 메시지식, 연결 메시지식, 블록
㈁. ㈀을 변수에 배당한 대입식(재귀사용 허용)
㈂. ㈀ 또는 ㈁ 또는 괄호로 둘러싼 것(재귀사용 허용)
6. 식의 평가 순서
일반 사항 : 좌에서 우
괄호 우선
메시지식 일반사항보다 우선
연결메시지식 평가
대입식 평가
가능하면 블록식 평가
11-2. 제어 구조
1. 택일 구조 (4가지의 구조)
ifTrue : aBlock
ifFalse : aBlock
ifTrue : trueBlock ifFalse : falseBlock
ifRalse : falseBlock ifTrue : trueBlock
2. 조건 반복 (2가지 구조)
whileTrue : aBlock
whileFalse : aBlock
3. 중문 반복 (2가지 구조)
to : aNumber do : aBlock
to : aNumber by : aNumber do : aBlock
4. 횟수 반복
timesRepeat : aBlock
(예)
lsuml
sum <- 0.
I <- 0.
100 timesReport : [i <- I + 1, sum <- sum + I]
※ 위의 세가지 예는 모두 sum = 1 + 2 + ... + 100이다.
5. 요소 반복 : 배열 요소를 블록 인수로 해 블록을 반복 실행
(예)
sum <- 0.
#(2 3 5 7 11) do : [:prime <- sum + prime]
위 결과는 sum <- 2 + 3 + 5 + 7 + 11의 결과와 같다.
12. Smalltalk 프로그래밍
12-1. 변수
1. 전용 변수 : 객체가 참조 가능한 변수이며 소문자로 시작
실체변수 : 실체화된 객체를 가리키는 변수 (명칭부 변수, 색인부 변수)
임시변수 : 메소드나 Smalltalk의 프로그램 세그먼트에서 사용되는 지역 변수
2. 공유 전수 : 다수의 객체가 잠조 가능한 변수로 대문자로 시작
클래스 변수 : 클래스인 객체를 나타내는 변수
전역 변수 : 프로그램의 모든 객체가 참조 가능한 변수
풀 변수 : 몇몇 특정 클래스에서 공유하는 변수
3. 의사 변수 : 재정의 할 수 없으며 항상 유일하다
nil : 정의되지 않은 변수가 참조하는 객체
true : 클래스 true의 셀체로 참인 논리값을 나타낸다.
false : 클래스 false의 실체로 거짓인 논리값을 나타낸다.
self : 수신자가 속한 클래스에서 self가 받은 메시지를 찾아
자신의 수신자처럼 동작한다.
super : 수신자가 속한 상위 클래스에서 super가 받은 메시지를
찾아 수신자가 상의 클래스인 것처럼 동작한다.
12-2. zmffotm 기술 방법
1. 클래스명
2. 슈퍼 클래스명 EH는 서브 클래스명
3. 클래스 변수명
4. 풀 변수
5. 클래스 프로토콜
7. 실체 변수명
8. 실체 프로토콜
12-3. 프로토콜 기술
프로토콜은 하나 이상의 메소드로 이루어진 범주가 하나 또는 여러 번 기술된 것이다. 클래스 범주명과 프로토콜 범주명은 프로그램의 실행에는 관계가 없으며, 메소드나 블록에서 반환식을 만나면 메소드나 블록의 실행은 완료되고 이 반환식의 값이 메소드와 블록의 값으로 된다.
13. 객체 지향 언어 설계 문제
13-1. 클래스와 자료형
1. 클래스에 대해 기존의 자료형 검사에서 제외시킨다.
2. 클래스를 자료형 생성자로 간주하여 클래스 선언문을 언어의
자료형의 일부분으로 취급한다.
3. 클래스 자체가 자료형 시스템이 된다.
13-2. 상속과 도입
객체 지향 프로그래밍에서 클라이언트는 계승자와 구분된다.
은닉 : 클라이언트는 클래스의 메소드를 사용할 수는 있으니 내부의 내용은 모른다.
계승자 : 클래스의 특징과 구현에 대한 접근을 모두 상속받는다. (오픈-클로즈드 법칙)
상속은 은닉보다 덜 안전한 절차.
13-3. 상속과 다형성
객체 지향 언어는 상속과 동적 바인딩이 묵시적인 다형성을 지원하므로 명시적인 다형성의 기능을 제공해야 할 필요가 적다.
매개화된 자료형은 보다 구현하기 어려우므로 매개 변수형 클래스 표시 기법을 명시적으로 제공.
(예)
x + y
와 같은 문장은 Smalltalk, C++, Eiffel에서 x, +(y)로 해석되므로 x의 형과 매개변수 y의 형에 EK라 자동적으로 다향성이 이루어짐
14. 참고 문헌 / 사이트
참고 문헌
원유헌, 프로그래밍 언어론, 정익사, 1999.
최영근, 허계범 공저, 객체 지향 소프트웨어 공학, 한국실리콘, 1998.
KMK정보산업연구원 역, 객체공학, 삼각형, 1995.
대림정보통신(주) 컨설팅센터, 객체란 무엇인가, 전자신문사, 1997.
구자영, C++와 객체지향, 大英社, 1996.
참고 사이트
http://blog.naver.com/popo1008.do?Redirect=Log&logNo=20009747098객체지향의 개념
http://www.javastudy.co.kr/docs/yopark/chap03/chap03.html객체 프로그래밍
http://kmh.ync.ac.kr/encycl/terms/termsO/objector2.htm객체지향 분석 및 설계기법
수치상수 : 15.3(10진 상수), 2r101011(2진 상수) ...
문자상수 : $=, $A ...
심벌상수 : #asOrderedCollection, #at : put ...
배열상수 : #(3 seven), #(‘read’, ‘yellow’, ‘blue’) ...
2. 변 수 : 다른 언어의 변수와 같지만 자료형이 없으므로 변수의 형이 없다. 따라서, 동적 자료형 검사를|하여야 한다.
(예)
abc <- 3
abc <- "ABC"
a<- b <- C + 1
3. 메시지식
(형식)
<메시지식> ::= <수신자><메시지>
<메시지> ::= <메시지 선택자>[<메시지 인수>]
(종류)
단항 메시지식 <수신자><단항 선택자>
이항 메시지식 <수신자><이항 선택자>
예약어 메시지식 <수신자><예약어 메시지>
연결 메시지식 {<수신자><메시지>;}
4. 블럭[<문>]의 꼴
<문> ::= {<식>.}*
블록의 인수
[:인수1...:인수n|문] value : 실인수1...value : 실인수n
5. 수 식 : 수식은 객체의 메시지로 구성
㈀. 리터널, 변수, 메시지식, 연결 메시지식, 블록
㈁. ㈀을 변수에 배당한 대입식(재귀사용 허용)
㈂. ㈀ 또는 ㈁ 또는 괄호로 둘러싼 것(재귀사용 허용)
6. 식의 평가 순서
일반 사항 : 좌에서 우
괄호 우선
메시지식 일반사항보다 우선
연결메시지식 평가
대입식 평가
가능하면 블록식 평가
11-2. 제어 구조
1. 택일 구조 (4가지의 구조)
ifTrue : aBlock
ifFalse : aBlock
ifTrue : trueBlock ifFalse : falseBlock
ifRalse : falseBlock ifTrue : trueBlock
2. 조건 반복 (2가지 구조)
whileTrue : aBlock
whileFalse : aBlock
3. 중문 반복 (2가지 구조)
to : aNumber do : aBlock
to : aNumber by : aNumber do : aBlock
4. 횟수 반복
timesRepeat : aBlock
(예)
lsuml
sum <- 0.
I <- 0.
100 timesReport : [i <- I + 1, sum <- sum + I]
※ 위의 세가지 예는 모두 sum = 1 + 2 + ... + 100이다.
5. 요소 반복 : 배열 요소를 블록 인수로 해 블록을 반복 실행
(예)
sum <- 0.
#(2 3 5 7 11) do : [:prime <- sum + prime]
위 결과는 sum <- 2 + 3 + 5 + 7 + 11의 결과와 같다.
12. Smalltalk 프로그래밍
12-1. 변수
1. 전용 변수 : 객체가 참조 가능한 변수이며 소문자로 시작
실체변수 : 실체화된 객체를 가리키는 변수 (명칭부 변수, 색인부 변수)
임시변수 : 메소드나 Smalltalk의 프로그램 세그먼트에서 사용되는 지역 변수
2. 공유 전수 : 다수의 객체가 잠조 가능한 변수로 대문자로 시작
클래스 변수 : 클래스인 객체를 나타내는 변수
전역 변수 : 프로그램의 모든 객체가 참조 가능한 변수
풀 변수 : 몇몇 특정 클래스에서 공유하는 변수
3. 의사 변수 : 재정의 할 수 없으며 항상 유일하다
nil : 정의되지 않은 변수가 참조하는 객체
true : 클래스 true의 셀체로 참인 논리값을 나타낸다.
false : 클래스 false의 실체로 거짓인 논리값을 나타낸다.
self : 수신자가 속한 클래스에서 self가 받은 메시지를 찾아
자신의 수신자처럼 동작한다.
super : 수신자가 속한 상위 클래스에서 super가 받은 메시지를
찾아 수신자가 상의 클래스인 것처럼 동작한다.
12-2. zmffotm 기술 방법
1. 클래스명
2. 슈퍼 클래스명 EH는 서브 클래스명
3. 클래스 변수명
4. 풀 변수
5. 클래스 프로토콜
7. 실체 변수명
8. 실체 프로토콜
12-3. 프로토콜 기술
프로토콜은 하나 이상의 메소드로 이루어진 범주가 하나 또는 여러 번 기술된 것이다. 클래스 범주명과 프로토콜 범주명은 프로그램의 실행에는 관계가 없으며, 메소드나 블록에서 반환식을 만나면 메소드나 블록의 실행은 완료되고 이 반환식의 값이 메소드와 블록의 값으로 된다.
13. 객체 지향 언어 설계 문제
13-1. 클래스와 자료형
1. 클래스에 대해 기존의 자료형 검사에서 제외시킨다.
2. 클래스를 자료형 생성자로 간주하여 클래스 선언문을 언어의
자료형의 일부분으로 취급한다.
3. 클래스 자체가 자료형 시스템이 된다.
13-2. 상속과 도입
객체 지향 프로그래밍에서 클라이언트는 계승자와 구분된다.
은닉 : 클라이언트는 클래스의 메소드를 사용할 수는 있으니 내부의 내용은 모른다.
계승자 : 클래스의 특징과 구현에 대한 접근을 모두 상속받는다. (오픈-클로즈드 법칙)
상속은 은닉보다 덜 안전한 절차.
13-3. 상속과 다형성
객체 지향 언어는 상속과 동적 바인딩이 묵시적인 다형성을 지원하므로 명시적인 다형성의 기능을 제공해야 할 필요가 적다.
매개화된 자료형은 보다 구현하기 어려우므로 매개 변수형 클래스 표시 기법을 명시적으로 제공.
(예)
x + y
와 같은 문장은 Smalltalk, C++, Eiffel에서 x, +(y)로 해석되므로 x의 형과 매개변수 y의 형에 EK라 자동적으로 다향성이 이루어짐
14. 참고 문헌 / 사이트
참고 문헌
원유헌, 프로그래밍 언어론, 정익사, 1999.
최영근, 허계범 공저, 객체 지향 소프트웨어 공학, 한국실리콘, 1998.
KMK정보산업연구원 역, 객체공학, 삼각형, 1995.
대림정보통신(주) 컨설팅센터, 객체란 무엇인가, 전자신문사, 1997.
구자영, C++와 객체지향, 大英社, 1996.
참고 사이트
http://blog.naver.com/popo1008.do?Redirect=Log&logNo=20009747098객체지향의 개념
http://www.javastudy.co.kr/docs/yopark/chap03/chap03.html객체 프로그래밍
http://kmh.ync.ac.kr/encycl/terms/termsO/objector2.htm객체지향 분석 및 설계기법
소개글