Abstraction
: 추상화의 반대말은 detail, reprecentational, concrete
최초의 객체지향 언어 → SMALLTALK80
최초의 함수 언어 → LISP
최초의 논리 언어 → Prolog
Process Abstraction
-
처리에 대한 추상화 : 함수
-
처리 과정에 대한 추상화를 함수명으로 설정한다.
- 함수의 목적은 재사용이다. (재사용의 단위)
- 처리과정별로 묶는 것 → 함수
main(){ // 책제목
plus(); // 목차
sort(); // 목차 -> 더 가면 내용
...
} // 하나씩 디테일하게 가는 것이다.
-
Information Hiding
- 변수에 대한 권한을 좁게 설정해서 (지역변수)
유지 보수를 쉽게 한다.
-
coupling 되었다는 것은 모듈이 독립적이지 못하다.
- 변수를 공유했을 때 나온다.
- 지역변수는 카플링 될일 이 없다.
-
‘side-effect’ 문제 : 부작용 → 부수적인 작용
- 함수가 할 일을 다했는데 자기 변수 이외의 변수를 건드렸다.
- 모듈이 결함이 생긴다.
-
prototype : 함수의 헤더 → 이것만 알면 사용가능
Data Abstraction
- Abstract Data Type = class 의 instance를 object라고한다
- data(자료) + method(자료에 대한 연산)
- user defined data type
- 각각의 접근 권한을 따로 설정할 수 있다.
- Java : public , default, protected, private
- C++ : public, protected, private
- 데이터 별로 묶어서 계산을 만드는 것 → 객체지향
- ex) Stack 이라는 data 와 push(), pull() …
객체 지향 프로그램
- 전역변수를 쓰지 않으려다 보니깐 발전하였다.
- 객체지향 방법에서는 재사용의 단위가 class
- Information hiding + encapsulation 둘다 구현해낸것이다.
- cilent(객체)가 sever(class) 에게 요청(method)
- protocal : 서로 협약된 규약
- actual parameter 을 알맞게 보내는 것
- arrayList.push_back(dodo)
- Constructor (생성자)
- 초기화
- 생성될때 해야될 것들
- return 문 없음