No older revisions available
No older revisions available
Procedural (또는 Structured) 에 의한 방법.
- Top-Down 에 의한 문제의 분해
- 문제 분해 또는 재정의
- 추후 독립적인 모듈. 한쪽 모듈의 변경이 다른 모듈의 세부 내용에 영향을 미치지 않는다.
- 순차, 반복, 비교. 모듈들.
- 주요 개념들
- 클래스
- 클래스를 생성하다 - 인스턴스화 시키다
- C++ 에서의 클래스 생성
- Python 에서의 클래스 생성
- 클래스들 간의 대화
- 클래스
- 부가적 개념들
- 상속
- 포함
- 상속
문제 ¶
실습 관련 필요화일 ¶
실습 Tutorial ¶
- Python 2.2 를 인스톨한다.
- 실습관련 필요 프로그램인 idlefork 를 설치한다.
- idlefork 를 실행. (idle.pyw, idle.py, idle.bat 등)
- Run -> Python Shell 을 실행한다. 인터프리터가 뜰 것이다.
- 다음의 사항을 인터프리터에 한줄씩 입력하면서 코드를 생각해 보기.
~cpp from StarCraft import StarCraft sc = StarCraft () gateway = sc.createGateway () z1 = gateway.createZealot () z1.move (160,160) d1 = gateway.createDragoon () d1.move (180,180) z1.printHp() z1.getPosition() d1.printHp() d1.getPosition() z1.setAttackTarget(d1) z1.printAttackTarget() z1.getAttackTarget().printHp() z1.getAttackTarget().getPosition() z1.attack() d1.printHp()
실습 Tutorial2 ¶
C++ 에서의 클래스의 구현. 이용예
~cpp #ifndef _OBJECT_H_ #define _OBJECT_H_ class Object { public: Object (); ~Object (); void setValue(int number) { value = number; } int getValue() { return value; } protected: int value; } #endif int main (void) { Object* o = new Object (); o->setValue = 10; printf ("object value : %d.. \n", o->getValue()); delete o; }
(데블스캠프이후 페이지 이름 변경 필요)
- 주제 : Object Oriented Programming
- 대상 : 1학년 신입회원들.
C에 대한 기본 이해 있음. (포인터, 배열, 구조체 등)
OOP 와 관련한 개념 전혀 없음.
- 목표 : OOP 에 대한 전반적인 개념들과 원리의 이해 (class, instance, ) 이해, 실제 프로그래밍시의 OOP 식 사고법 등의 이해.
- 구체적 목표 결과 : 세미나와 실습을 마친 사람들이 프로그래밍을 할때 프로그램에서의 각 기능들을 보고 객체들을 떠올리며 기능별 책임을 부여하고, 객체들간의 대화를 시키면서 구현하는 모습을 확인해본다. 처음 실습때는 튜토리얼을 따라하게끔 하고, 마지막으론 직접 스스로 구현하는 전체 프로그램으로.
- 주어진 시간 : 9시 ~ 6시. (9시간. 실질적으론 중간 휴식 포함 7시간정도)
Table Of Contents
- Computer S & E 관련 전반적인 흐름. 전체중 부분. 그 부분중 OOP.
- 프로그래밍에 대한 접근방법.
- Divide & Conquer. Top-Down 형으로 문제를 나누기.
- 구체적인 예제 준비
- 구체적인 예제 준비
- 문제에 대한 전개. 재정의하기.
- 수학문제 관련 예제 준비
- 수학문제 관련 예제 준비
- Divide & Conquer. Top-Down 형으로 문제를 나누기.
- 객체지향 프로그래밍식 접근.
- 객체지향 프로그래밍의 일반적인 개념
- class
- instance 화 시키다. - class -> object
- private, protected, encapsulation 과 Information Hiding
- class
- class를 어떻게 이용할까? 이미 만들어진 class를 이용하기 - 실습.
실습 Tutorial - Python Interpreter 의 이용 관련.
이미 만들어진 class file 준비하기.
인터프리터에 객체생성 - 동작시키기 예제 만들기.
- 객체 간의 대화하기 - object, message. 해당 객체의 메소드를 호출한다.
- 실습 - 객체간 레퍼런스의 참조, 한 객체가 다른 객체에게 메시지를 날리기.
- 구체적인 예제준비
- 구체적인 예제준비
- 부연 설명 - 윈도우즈 프로그램에 대한 OO 개념적 관점. (만일 전날 Window Programming 설명이 어느정도 되었냐에 따라)
- 윈도우즈 class
- 윈도우즈에서 돌고 있는 프로그램 - instance
- Message Driven Programming - 윈도우 창 메시지를 보내다. 메시지를 받아서 처리하다.
- 윈도우즈 class
- 전반적인 OOP 식 프로그래밍. 디자인의 접근 - Class 에 Responsibility을 부여한다. 그리고 다른 클래스들과 Colloboration 하면서 프로그램을 구성한다.
- 객체의 재사용. 기반을 만들어나가기 : 부품들을 조합하기.
- 포함 (Delegation) 의 방법 (Has - a)
- 상속 (Inheritance) 의 방법 (Is - a)
- 단일 상속과 다중 상속
- 구현 상속과 인터페이스 상속.
- Polymorpism
- Upcast
- Downcast
- Upcast
- 단일 상속과 다중 상속
- 포함 (Delegation) 의 방법 (Has - a)
- 실습 예제 준비. - 1시간 30분 가량. 풀기 예상.
- 상속에서의 문제점들.
- 클래스들과의 관계 - 1 : n 구조. 자료구조체들과 결합.
- 추후에 읽을 거리들. 앞으로의 공부할 것들.
제기된 문제:
- 내용이 너무 많다. 세미나는 책과 다르다.
- 휴식시간의 명시 필요.
- 문제제기꺼리 - 현재의 내용이 'OOP를 쓰면 왜 좋을까?', 'OOP를 안써도 문제를 해결할 수 있을텐데...' 에 대해 어떤 답을 해줄까?
- OOP가 도대체 무엇인가
- OOP가 나에게 어떤 가치를 주는가
- 내가 왜 OOP를 익혀야 하는가
- OOP를 익히기 위해 어떤 공부가 필요한가