제 4장. 객체 지향 프로그래밍 시작하기 2009-1학기 프로그래밍언어및실습 (C++).

Slides:



Advertisements
Similar presentations
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
Advertisements

1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
3부 객체지향 3부에서는 자바 언어의 핵심인 객체지향의 개념과 클래스, 객체, 상속, 다형성 등의 개념에 관해 설명합니다.
최윤정 Java 프로그래밍 클래스 상속 최윤정
C 프로그래밍 I.
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 6. 형변환.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
자바 5.0 프로그래밍.
제7장 클래스와 객체.
TCP/IP Socket Programming…
14장. 포인터와 함수에 대한 이해.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
10장. 예외처리.
자바 5.0 프로그래밍.
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
C#.
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
7장 인터페이스와 추상 클래스.
Method & library.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
27장. 모듈화 프로그래밍.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
제 1장. C++ 시작하기.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
포인터 1차원 배열과 포인터 2차원 배열과 포인터 문자열 배열과 포인터 포인터 배열
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
자바 5.0 프로그래밍.
12. 상속 : 고급.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
가장 많이 사용 Accelerator 최상위 WM_COMMAND, OLE 메시지 관련 이벤트 처리만 가능 이 클래스를 상속받아서 다른 이벤트 처리 이벤트 처리 관련 윈도우(창) 최상위 클래스 멀티 테스킹(모듈) CFrameWnd, Cview,
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
발표자 : 이지연 Programming Systems Lab.
구조체(struct)와 공용체(union)
Chapter 11 구조체.
제 4 장 Record.
17장. 문자열 01_ 문자열 사용의 기본 02_ 문자열의 사용.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
김선균 컴퓨터 프로그래밍 기초 - 12th : 문자열 - 김선균
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
7 생성자 함수.
6 객체.
Presentation transcript:

제 4장. 객체 지향 프로그래밍 시작하기 2009-1학기 프로그래밍언어및실습 (C++)

학습 목표 객체 지향 프로그래밍의 기본 개념과 장점을 알아본다. 클래스와 객체의 개념에 대해서 알아본다 객체 지향 프로그래밍의 세가지 특징인 캡슐화, 상속, 다형성에 대해서 알아본다. 2009-1학기 프로그래밍언어및실습 (C++)

객체 지향 프로그래밍이란 객체 지향 프로그래밍 인터페이스(interface) 관련된 함수와 변수를 묶어서 ‘객체(object)’를 만들고, 객체 단위로 프로그래밍하기 위한 방법 인터페이스(interface) 객체의 서비스에 대해서 미리 약속된 부분 v 2009-1학기 프로그래밍언어및실습 (C++)

소프트웨어의 부품화 객체 지향 프로그램에서의 객체는 프로그램을 구성하는 일종의 소프트웨어 부품 역할을 제공한다. 소프트웨어를 부품화하려면 객체의 사용 방법, 즉 인터페이스가 잘 정의되어 있어야만 한다. 2009-1학기 프로그래밍언어및실습 (C++)

객체 지향 프로그래밍의 장점 모듈간의 독립성이 증대된다. 재사용성이 증대된다. 융통성이나 확장성이 좋다. 특정 객체에서 문제가 발생하면 해당 객체의 구현만 수정하면 된다. 객체의 구현이 변경되더라도 객체의 사용 방법, 즉 객체의 인터페이스는 변경되어서는 안 된다. 재사용성이 증대된다. 클래스 라이브러리가 제공된다. 융통성이나 확장성이 좋다. 객체의 사용자는 객체의 서비스를 이용하기 위해서 객체의 인터페이스로 접근하는데, 인터페이스를 변경하지 않은 상태에서 객체의 내부 구현을 얼마든지 변경할 수 있다. v 2009-1학기 프로그래밍언어및실습 (C++)

클래스와 객체 (1) 클래스 객체가 가진 공통된 특성을 기술하는 것 일종의 데이터 형 역할 (사용자 정의 형) 2009-1학기 v 2009-1학기 프로그래밍언어및실습 (C++)

클래스와 객체 (2) 객체 클래스 형에 의해서 생성되는 변수 역할 구체적인 값을 갖는 실체(인스턴스) 2009-1학기 v 2009-1학기 프로그래밍언어및실습 (C++)

객체 지향 프로그래밍의 특징 캡슐화(encapsulation) 상속(inheritance) 다형성(polymorphism) v 2009-1학기 프로그래밍언어및실습 (C++)

캡슐화 (1) 캡슐화 정보 은닉 관련된 함수들과 변수들을 하나로 묶어주는 것 객체를 사용하기 위해서 필요한 부분을 제외한 나머지 부분을 캡슐로 감싸서 숨기는 것 정보 은닉 객체를 사용하기 위한 약속된 부분만 공개하고 객체의 내부 구현을 숨기는 것 객체를 잘못된 변경으로부터 보호할 수 있다. v 2009-1학기 프로그래밍언어및실습 (C++)

캡슐화 (2) Stack 클래스의 정보 은닉과 캡슐화 2009-1학기 프로그래밍언어및실습 (C++)

상속 상속 기존의 클래스가 가진 기능을 이어 받아서 새로운 클래스를 정의하는 것 재사용성 증대 파일 처리 기능 제공 (바이너리 입출력 기능) v 상속받은 바이너리 입출력 기능 + 텍스트 입출력 기능 2009-1학기 프로그래밍언어및실습 (C++)

다형성 다형성 같은 방법으로 객체의 서비스를 요청해도 어떤 객체가 사용되는지에 따라 다르게 동작하는 것 객체의 인터페이스가 같아도 내부적인 구현은 다르다. v 2009-1학기 프로그래밍언어및실습 (C++)

클래스와 객체 사용하기 string 클래스 vector 클래스 문자열에 대한 처리를 제공 실행 중에 크기를 변경할 수 있는 배열 기능을 제공 2009-1학기 프로그래밍언어및실습 (C++)

string 클래스 (1) 문자열 변경 : = 연산자 이용 문자열의 길이 구하기 : size 멤버 함수 이용 문자열 비교 : == 연산자 이용 string s1, s2; s1 = “hello world”; s2 = s1; string s1 = “abcde”; cout << s1.size(); string s1 = “abcde”; string s2 = s1; if( s1 == s2 ) cout << “s1과 s2는 같습니다.\n”; 2009-1학기 프로그래밍언어및실습 (C++)

string 클래스 (2) 문자열 입출력 : <<, >> 연산자 이용 공백 문자를 포함한 문자열 입력 : getline 함수 이용 string s1; cin >> s1; cout << s1 << “\n”; string s1; getline(cin, s1); 2009-1학기 프로그래밍언어및실습 (C++)

string 클래스 (3) const char* 형으로 변환 : c_str 멤버 함수 이용 string s1 = “abcde”; char *str = s1.c_str(); // 컴파일 에러 const char *str = s1.c_str(); // OK str[0] = ‘A’; // 컴파일 에러 char *tmp = new char[s1.size() + 1]; strcpy(tmp, s1.c_str()); // c_str 함수의 리턴 값을 복사함 tmp[0] = ‘A’; // OK 2009-1학기 프로그래밍언어및실습 (C++)

vector 클래스 (1) 배열의 원소로 사용할 값의 데이터 형을 <>에 지정 새로운 원소 추가 : push_back 멤버 함수 이용 vector<int> v1; // int 값을 저장하는 배열 vector<string> v2; // string 객체를 저장하는 배열 vector<WORD*> v3;// WORD 구조체 포인터를 저장하는 배열 WORD *pWord1 = new WORD; WORD *pWord2 = new WORD; v3.push_back(pWord1); // 배열의 원소를 추가 후 배열의 크기 증가 v3.push_back(pWord2); // 배열의 원소를 추가 후 배열의 크기 증가 2009-1학기 프로그래밍언어및실습 (C++)

vector 클래스 (2) 배열 원소의 개수 구하기 : size 멤버 함수 이용 배열의 원소 접근 : [] 연산자 이용 cout << “원소의 개수 : “ << v3.size() << “\n”; for(int i = 0 ; i < v3.size() ; i++ ) WORD* pWord = v3[i]; 2009-1학기 프로그래밍언어및실습 (C++)

정리 객체 지향 프로그래밍은 서로 관련된 함수와 변수를 하나로 묶어 객체를 정의하고, 객체 단위로 프로그래밍하는 것이다. 객체는 일종의 소프트웨어 부품으로 생각할 수 있다. 소프트웨어 부품을 조립해서 프로그램을 개발하는 방식에서 가장 중요한 것은 부품간의 연결을 위해서 약속된 부분, 즉 객체의 인터페이스가 필요하다는 점이다. 객체 지향 프로그래밍의 장점은 모듈화, 재사용성, 확장성이 증대된다는 것이다. 객체의 특성을 기술한 것을 클래스라고 하며, 클래스는 일종의 사용자 데이터 형이다. 클래스 형의 변수를 객체라고 한다. 객체 지향 프로그래밍의 세가지 특징은 캡슐화, 상속, 다형성이다. 클래스를 사용하는 사용자는 클래스에 구현된 기능을 믿고 사용할 수 있다. 즉, 객체를 사용하면 같은 기능을 안전하고 간편하게 이용할 수 있다. 2009-1학기 프로그래밍언어및실습 (C++)