(encapsulation)
반로 리 떤 보 떤 류 개념로 로 관되 많 다. 러 관된 보 또는 기능 나로 묶는 것 런 과다. 를 들 대교 관리는 들 , , , 공 들 보를 며 들 관 가능 , 변경, 과목 들 기능들 각 다. 러 보 보 리 , 기능들 모두 관 것므로 라는 두리로 묶두는 것 러 것다. 렇게 관된 들 나로 묶는 것 (encapsulation)라고 다.
로그램 미는 로그램 나 가 문를 데 들 부들 개발 단 고, 객라는 덩리 단로 문 대 각게 는 단 공는 데 다.
로그램 미는 로그램 나 가 문를 데 들 부들 개발 단 고, 객라는 덩리 단로 문 대 각게 는 단 공는 데 다.
(inheritance)
라는 개념 리 는 개념 로그램로 기 리 단다. 떤 객 류, 래는 더 류 가 는데 렇게 된 류나 subtype subclass라고 다.
객 로그래밍 " " 로 래를 때 모든 것 부 다 는 것 라 미 는 래를 바로 만 가 는 경 방법 미다. 때 로 기는 래를 subclass라 고 그 바 되는 래를 superclass라 다. 렇게 면 래들 공로 가는 , 데 구나 들 복 는 뿐 라, 나 가 superclass 만 고면 그 subclass들 변경된 동로 게 되므로 매 리다.
객 로그래밍 " " 로 래를 때 모든 것 부 다 는 것 라 미 는 래를 바로 만 가 는 경 방법 미다. 때 로 기는 래를 subclass라 고 그 바 되는 래를 superclass라 다. 렇게 면 래들 공로 가는 , 데 구나 들 복 는 뿐 라, 나 가 superclass 만 고면 그 subclass들 변경된 동로 게 되므로 매 리다.
다(Polymorphism)
객 로그램 로 나 나 볼 러 목로 될 는 다(Polymorphism) 들 다. 객 다란, 복 래가 나 메 대 각 래가 가고 는 고 방법로 답 는 능력 말다. , 개로 된 래들 ㅌ 를 로 가고 나 메 대 각기 다른 방법로 그 메를 는 것 미다. 를 들, 러 가 (file)들 린 는 를 각 보. 는 단 (text file), 문 기로 만든 멧 (format file), 그래 는 (file with graphics) 러 가가 다. 들 각각 들 린 는 방법 모두 다르다, 객 는 래럼 각 류 래로 고, 각각 류로 Print라는 를 맞게 구다.
~cpp Text file -> Print(); Formatted file -> Print(); File with graphics -> Print();
렇게 된 객들 모두 Print라는 메를 며, 각 류 맞게 린 다. 렇듯 다 같 를 러 래가 각 래 맞게 달리 고 같 메 답 게 다.
보 (infomation hiding)
보 란 목 대 보를 부 감는 것 미다. , 리려는 데 구 된 고리 들 부 근 못록 고 내부 들만 근게 된다. 객 관 나 논문 두가 개념 개되는 것 바로 객라는 것 보 리를 로그래밍 것기때문다.
객 객 보 교 부 공개고 는 련 보를 public interface로 부 객들 Interface를 그 객 보를 교록 다. , 객 Public Interface를 그 객가 "무 다. 보는 공개 다."라고 부 는 것다.
Public Interface는 따라 다른데, C++는 "public"란 구문 두 "public"란 들 목들만 부 공개된다. Effel란 는 "export"라는 란 된 목들만 부 공개된다. POINT라는 객 를 보면 move setcolor 들 부 관될 는 public interface 다. 기 가 move setcolor라는 들 부 보 리 는 들라는 것며 각 가 가고 는 드나 고리까 보는 것 라는 것다. 가 부 보는 부 signature라고 며 나 signature는 , 력 매개변(input parameter) 력 매개변(output parameter)로 구되 다.
볼 보 객 내부 된 데 구가 변더라 변 객들게 는다는 것다. 로, 떤 변 구를 배(array)구 리(list) 구로 바꾸더라 로그램 다른 부 미 는다. 또 떤 된 고리 바꾸더라 signature만 바꾸 면 부 객들게 는다. 를 들, sorting 경 된 sequence sorting 고리 quick sorting 고리로 바뀔때 부 떤 는다. 러 보 (maintainability) (extendability)라 다.
객 객 보 교 부 공개고 는 련 보를 public interface로 부 객들 Interface를 그 객 보를 교록 다. , 객 Public Interface를 그 객가 "무 다. 보는 공개 다."라고 부 는 것다.
Public Interface는 따라 다른데, C++는 "public"란 구문 두 "public"란 들 목들만 부 공개된다. Effel란 는 "export"라는 란 된 목들만 부 공개된다. POINT라는 객 를 보면 move setcolor 들 부 관될 는 public interface 다. 기 가 move setcolor라는 들 부 보 리 는 들라는 것며 각 가 가고 는 드나 고리까 보는 것 라는 것다. 가 부 보는 부 signature라고 며 나 signature는 , 력 매개변(input parameter) 력 매개변(output parameter)로 구되 다.
볼 보 객 내부 된 데 구가 변더라 변 객들게 는다는 것다. 로, 떤 변 구를 배(array)구 리(list) 구로 바꾸더라 로그램 다른 부 미 는다. 또 떤 된 고리 바꾸더라 signature만 바꾸 면 부 객들게 는다. 를 들, sorting 경 된 sequence sorting 고리 quick sorting 고리로 바뀔때 부 떤 는다. 러 보 (maintainability) (extendability)라 다.
래(Abstract Class)
래 는 (instance)를 만들 낼 목 라 subclass들 공된 묘기 래가 는데, 를 래(Abstract class, Virtual class)라 다. 변들 고 부는 구 고, Signature만 것들 다. 들 (Abstract function)라 부르며, 들 subclass를 때 그 래 목 맞게 구된다. 때 래 subclass가 모든 들 구 때, 를 래(Concrete class)라고 부른다. 래는 를 만들 낼 다.
래 로 린 를 각 보. 모든 류 린들 공로 가는 래 "Printer"가 다고 다면, 기는 린 를 나내는 변, 린 변가 며 로는 린 는 Print 각 다. 그러나 린다(Dot matrix printer, Laser printer, Ink jet printer) 린 는 방법 다르므로 래 는 Print라는 를 구 다. 다만, 기는 Print Signature만 가고 며, 구 러 subclass 각 린 류 맞게 면 된다.
"Printer"라는 래는 래로 떤 린 기능 가고 고, dot matrix printer나 laser printer 래들 공된 만 고 므로, 그 를 만드는 것 무미다. 래는 개발 방법(Incremental Development) 게 될 며, 공 (attribute) 및 므로 문를 모델링는데 리 더다.
래 로 린 를 각 보. 모든 류 린들 공로 가는 래 "Printer"가 다고 다면, 기는 린 를 나내는 변, 린 변가 며 로는 린 는 Print 각 다. 그러나 린다(Dot matrix printer, Laser printer, Ink jet printer) 린 는 방법 다르므로 래 는 Print라는 를 구 다. 다만, 기는 Print Signature만 가고 며, 구 러 subclass 각 린 류 맞게 면 된다.
"Printer"라는 래는 래로 떤 린 기능 가고 고, dot matrix printer나 laser printer 래들 공된 만 고 므로, 그 를 만드는 것 무미다. 래는 개발 방법(Incremental Development) 게 될 며, 공 (attribute) 및 므로 문를 모델링는데 리 더다.