캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주
목 차 교육 목표 캡슐화(Encapsulation)란? 클래스(Class) 객체(Object) 구조체 & 공용체 프로그래밍 실습 생성자(Constructor) 소멸자(Destructor) 객체의 인수전달시 생성자/소멸자 멤버 접근 방법 정적 멤버(Static Member) 자기 참조(Self Reference) 두원공과대학 소프트웨어개발과 이 원 주
캡슐화(Encapsulation)란 ? Shape 정의 데이터(variable)와 연산(함수)를 하나로 결합시켜 모듈화하는 것 (Data) m_centerx m_centery Member variable 캡슐화 MoveTo() 연산 (Operation) Member Function 두원공과대학 소프트웨어개발과 이 원 주
클래스(Class) (1) 정의 객체의 속성을 정의 Format Class 클래스명{ [private:] //전용 부분 객체가 표현하는 자료 메시지를 받았을 때 처리방식을 지정한 연산(함수) Format Class 클래스명{ [private:] //전용 부분 자료 선언; 함수 선언; public: //공용 부분 } [객체 변수]; 클래스명 객체변수, 객체변수,…. 두원공과대학 소프트웨어개발과 이 원 주
클래스(Class) (2) 예 두원공과대학 소프트웨어개발과 이 원 주
클래스(Class) (3) 클래스 내부의 멤버함수 선언 Format Class 클래스명{ …….. 자료형 함수명(인수 선언) { ...함수 본체... }; } 두원공과대학 소프트웨어개발과 이 원 주
클래스(Class) (4) 예 두원공과대학 소프트웨어개발과 이 원 주
클래스(Class) (5) 클래스 외부의 멤버함수 선언 Format Class 클래스명{ …….. 자료형 함수명(인수 선언); } [inline] 자료형 클래스명 :: 함수명(인수 선언) { 함수 본체 두원공과대학 소프트웨어개발과 이 원 주
클래스(Class) (6) 예 두원공과대학 소프트웨어개발과 이 원 주
클래스(Class) (7) 두원공과대학 소프트웨어개발과 이 원 주
객체(Object) (1) 객체의 복사 동일한 클래스형으로 선언된 객체간의 자료 이동 가능 두원공과대학 소프트웨어개발과 이 원 주
객체(Object) (2) 객체의 인수전달 인수로 전달되는 객체는 Call by value 방식으로 전달된다. 두원공과대학 소프트웨어개발과 이 원 주
객체(Object) (3) 객체의 반환 함수의 반환형으로 클래스형 정의 두원공과대학 소프트웨어개발과 이 원 주
객체(Object) (4) 두원공과대학 소프트웨어개발과 이 원 주
객체(Object) (5) 객체의 배열 두원공과대학 소프트웨어개발과 이 원 주
객체(Object) (6) 객체의 포인터 객체 멤버 참조시 “->” 연산자 사용 두원공과대학 소프트웨어개발과 이 원 주
객체(Object) (7) 객체의 참조자 객체의 참조자를 사용하여 인수 전달(주소만 전달) 두원공과대학 소프트웨어개발과 이 원 주
객체(Object) (8) 두원공과대학 소프트웨어개발과 이 원 주
구조체 & 공용체 (1) 구조체 & 공용체 Member C++ 구조체 & 공용체 C C++ 자료; 자료; 연산(함수) 클래스와 유사 클래스와 차이점 구조체, 공용체로 선언된 자료와 연산은 특별히 명시하지 않으면 public으로 간주하여 외부에서 자유롭게 사용 가능 C C++ 자료; 자료; 연산(함수) 두원공과대학 소프트웨어개발과 이 원 주
구조체 & 공용체 (2) 예 두원공과대학 소프트웨어개발과 이 원 주
프로그래밍 실습 실습 실습시간(30분) 아래 프로그램에서 잘못된 부분을 설명하고 수정하라. 두원공과대학 소프트웨어개발과 이 원 주
프로그래밍 실습 결과 두원공과대학 소프트웨어개발과 이 원 주
생성자(Constructor) (1) 생성자 정의 기능 예 클래스와 동일한 이름을 가지며, 객체가 선언될 때 마다 자동적으로 호출되는 멤버함수 기능 클래스 내의 자료를 초기화 예 두원공과대학 소프트웨어개발과 이 원 주
생성자(Constructor) (2) 두원공과대학 소프트웨어개발과 이 원 주
소멸자(Destructor) (1) 소멸자 정의 기능 예 클래스와 동일한 이름을 가지며, 객체가 선언된 블록이 종료될 때 자동적으로 호출되는 멤버함수로 함수명 앞에 ~(tilde)를 붙여 생성자와 구별한다. 기능 동적으로 할당된 메모리 해제 예 두원공과대학 소프트웨어개발과 이 원 주
소멸자(Destructor) (2) 두원공과대학 소프트웨어개발과 이 원 주
객체의 인수전달시 생성자/소멸자 (1) 객체의 인수전달 문제점 해결방법 형태 생성자 소멸자 동적메모리 할당받은 경우 실인수가 가인수에 Call by value 형태로 복사되어 전달. 생성자 객체 복사시 호출되지 않는다 소멸자 함수 종료시 가인수의 객체가 소멸됨으로 소멸자 호출 문제점 동적메모리 할당받은 경우 소멸자를 호출하여 메모리를 해제하므로, 이후의 프로그램에서는 이 동적 메모리 사용시 error 발생 해결방법 객체의 참조자로 인수 전달 두원공과대학 소프트웨어개발과 이 원 주
객체의 인수전달시 생성자/소멸자 (2) 예 두원공과대학 소프트웨어개발과 이 원 주
객체의 인수전달시 생성자/소멸자 (3) Comment 처리후 compile 두원공과대학 소프트웨어개발과 이 원 주
멤버 접근 방법 (1) 클래스 전용부분의 자료 접근 방법 객체의 멤버함수만이 접근 가능(Encapsulation 구현) 클래스 전용부분 자료 멤버 함수 두원공과대학 소프트웨어개발과 이 원 주
멤버 접근 방법 (2) 일반 함수 or 다른 클래스 멤버함수의 접근방법 Friend 함수 선언 Format Class 클래스명{ 자료 선언; public: friend int func(); // Friend 함수 선언 } [객체 변수]; 두원공과대학 소프트웨어개발과 이 원 주
멤버 접근 방법 (3) 두원공과대학 소프트웨어개발과 이 원 주
정적(Static) 멤버 (1) 정적멤버 정의 특징 Format class Point{ static int x, y; 동일한 클래스명으로 선언된 여러 객체들이 하나의 자료를 공유할 수 있는 기능을 제공하는 것. 특징 모든 정적멤버 변수는 초기값을 지정하지 않으면 0으로 초기화된다. Format class Point{ static int x, y; public: setpt(int m, int n) { xval=m; yval=n; } } int Point::x, Point::y; //정적멤버 정의 void main() { //객체 Ob1과 Ob2가 정적변수 x, y를 공유 Point Ob1, Ob2; 두원공과대학 소프트웨어개발과 이 원 주
정적(Static) 멤버 (2) 두원공과대학 소프트웨어개발과 이 원 주
프로그래밍 실습 실습 실습시간(10분) 아래 프로그램의 실행 결과는 ? 두원공과대학 소프트웨어개발과 이 원 주
자기 참조(Self-reference) (1) 기능 객체가 자신을 가리키는 포인터로 “this”를 사용한다. 예 class x { int value; public: void set_value(int value) { value = value; } // 어떤 value ? void show_value() { cout << value <<“\n”; } }; 두원공과대학 소프트웨어개발과 이 원 주
자기 참조(Self-reference) (2) 두원공과대학 소프트웨어개발과 이 원 주
프로그래밍 실습 실습 실습시간(10분) 아래 프로그램을 this 포인터를 사용하여 클래스 멤버를 참조하도록 수정하시요. 두원공과대학 소프트웨어개발과 이 원 주
프로그래밍 실습 결과 두원공과대학 소프트웨어개발과 이 원 주
정 리 캡슐화(Encapsulation)란? 클래스(Class) 객체(Object) 구조체 & 공용체 생성자(Constructor) 소멸자(Destructor) 객체의 인수전달시 생성자/소멸자 멤버 접근 방법 정적 멤버(Static Member) 자기 참조(Self Reference) 프로그래밍 실습 두원공과대학 소프트웨어개발과 이 원 주