Data structures 01.2: C++ classes 동의대학교 멀티미디어공학과 이광의교수.

Slides:



Advertisements
Similar presentations
DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.1: an Introduction.
Advertisements

어르신 생활 지혜 ( 사 ) 과 우 회 과우봉사단 ( 사 ) 과 우 회 과우봉사단 1 녹색성장을 위한 생활과학.
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
12 장 템플릿 (template) Sung-Min Jung Internet Management Technology Lab. School of Information & Communication Engineering, Sungkyunkwan Univ. 300 Cheoncheon-dong,
안녕하십니까! 아파하는 이웃을 위한 치료제, 약 사 팀의 발표를 시작하겠습니다..
어서와 Java는 처음이지! 제3장선택과 반복.
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
명품 C++ 프로그래밍 3장. 클래스와 객체.
명품 C++ 8장 상속.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
C++ Espresso 제1장 기초 사항.
7장 배열 ②.
Internet Computing KUT Youn-Hee Han
실전 프로젝트 2 : 숫자야구 숫자 야구를 구현해보자.
제6장 객체배열과 벡터 객체 배열을 이해한다. 벡터(vector) 클래스를 사용할 수 있다.
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
16강. 자바 빈 빈 이란? 빈 만들기 빈 관련 액션 태그(useBean, getProperty, setProperty)
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
8. 객체와 클래스 (기본).
C++ Espresso 제9장 다형성.
배열, 포인터, 참조 배열은 같은 형을 가지는 변수들의 묶음이다..
명품 C++ 8장 상속.
자바 5.0 프로그래밍.
7장 클래스.
Data structures 02.2:mathematical induction 동의대학교 멀티미디어공학과 이광의 교수.
Data structures 02.3:programming recursive functions
윤 홍 란 4 장 클래스 작성 윤 홍 란
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
정적 멤버 변수/정적 멤버 함수 - friend 함수/클래스 template
주소록 프로그램.
스택(Stack) 김진수
6장 객체-지향 설계 ①.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Chapter 3 클래스. 최호성.
제13주 교차분석 설문조사를 이용한 자료분석.
추상 데이터 타입 정의하기 Defining abstract data types
컴퓨터 개론 및 실습 Dept. Computer Eng. Hankuk University of Foreign Studies
제5장 생성자와 접근제어 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
6장 객체-지향 설계 ①.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
[INA240] Data Structures and Practice
가상함수와 추상 클래스.
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
제 12장. 사용자 정의형으로서의 클래스 학기 프로그래밍언어및실습 (C++).
[CPA340] Algorithms and Practice Youn-Hee Han
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
프로그래머를 위한 첫걸음 JDBC Lecture 001 BY MINIO
자바 5.0 프로그래밍.
제8장 포인터와 동적객체 생성 포인터의 개념을 이해한다. 포인터와 관련된 연산을 이해한다.
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
알고리즘의 분석(analysis) 공간적 효율성(Space Efficiency)과 시간적 효율성(Time Efficiency)
제 11장. 템플릿과 STL 학기 프로그래밍언어및실습 (C++).
3장,4장 발표 서정우.
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
자바 5.0 프로그래밍.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
제 11 장 자바빈즈를 이용한 JDBC 프로그래밍 학기 인터넷비즈니스과 강 환수 교수.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
2015년 2학년 1반.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
10대의 자기 승리 세계인재개발원 조 성 용 교수.
성전기공식(안) 식 순 1. 기공미사 2. 기 공 식 3. 축 하 연 천주교 수원교구 퇴촌성당.
새로운 타입 정의하기 Defining new types
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
C# 09장. 클래스와 객체.
C++ 언어의 특징
발 표 자 : 7조 손 창 국 윤 오 성, 박 진 완 객체 지향 프로그래밍 C++
Presentation transcript:

Data structures 01.2: C++ classes 동의대학교 멀티미디어공학과 이광의교수

Today’s topic 자료구조의 정의 C++클래스: 추상자료형의 구현 포인터 정의1: 자료구조는 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법이다. 정의2: 자료구조는 추상자료형이다. 정의3: 자료구조는 잘 알려지고 유용한 추상자료형이다. C++클래스: 추상자료형의 구현 클래스 기초 클래스 구현 예 1: 채널목록 추상자료형의 (정렬되지 않은 목록) 구현 클래스 구현 예 2: 채널목록 추상자료형의 (채널번호 순으로 정렬된 목록) 구현 포인터 포인터 기초 포인터 활용 예 1 Dept. of Multimedia Engineering, DongEui Univ.(2)

Fundamentals of class 클래스란 무엇인가? 변수와 함수를 하나의 단위로 묶기 위한 C++ 문법 프로그래밍 언어에서 객체는 데이터와 그 데이터에 대한 연산으로 구성된다. 객체지향프로그래밍의 핵심개념: 객체(=클래스), 상속, 다형성 Dept. of Multimedia Engineering, DongEui Univ.(3)

Fundamentals of class 클래스 문법 클래스의 예: 클래스의 선언 및 활용, 저장방식의 결정 class channelList { … public: channelList myLst; ◀ string chNameOf (int nu); // class channelList myLst; int chNumOf (string na); myLst.insertCh (7, “시네마TV”); ◀ void deleteNum (int nu); myLst.insertCh (2, “CJ홈쇼핑”); void deleteName (string na); myLst.insertCh (14, “동의TV”); void insertCh (int nu, string na); cout << myLst.chNumOf (“시네마TV”); private: cout << myLst.chNameOf (2); int chn[100]; // channel numbers myLst.deleteNum(7); string name[100]; // channel names myLst.deleteName(“동의TV”); int size; … }; [4] [3] [2] [1] size [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(4)

Fundamentals of class 클래스 문법 클래스의 예: 클래스의 선언 및 활용, 저장방식의 결정 class channelList { … public: channelList myLst; string chNameOf (int nu); // class channelList myLst; int chNumOf (string na); myLst.insertCh (7, “시네마TV”); ◀ void deleteNum (int nu); myLst.insertCh (2, “CJ홈쇼핑”); ◀ void deleteName (string na); myLst.insertCh (14, “동의TV”); void insertCh (int nu, string na); cout << myLst.chNumOf (“시네마TV”); private: cout << myLst.chNameOf (2); int chn[100]; // channel numbers myLst.deleteNum(7); string name[100]; // channel names myLst.deleteName(“동의TV”); int size; … }; [4] [3] [2] [1] size 1 7 시네마TV [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(5)

Fundamentals of class 클래스 문법 클래스의 예: 클래스의 선언 및 활용, 저장방식의 결정 class channelList { … public: channelList myLst; string chNameOf (int nu); // class channelList myLst; int chNumOf (string na); myLst.insertCh (7, “시네마TV”); void deleteNum (int nu); myLst.insertCh (2, “CJ홈쇼핑”); ◀ void deleteName (string na); myLst.insertCh (14, “동의TV”); ◀ void insertCh (int nu, string na); cout << myLst.chNumOf (“시네마TV”); private: cout << myLst.chNameOf (2); int chn[100]; // channel numbers myLst.deleteNum(7); string name[100]; // channel names myLst.deleteName(“동의TV”); int size; … }; [4] [3] [2] 2 CJ홈쇼핑 [1] size 2 7 시네마TV [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(6)

Fundamentals of class 클래스 문법 클래스의 예: 클래스의 선언 및 활용, 저장방식의 결정 class channelList { … public: channelList myLst; string chNameOf (int nu); // class channelList myLst; int chNumOf (string na); myLst.insertCh (7, “시네마TV”); void deleteNum (int nu); myLst.insertCh (2, “CJ홈쇼핑”); void deleteName (string na); myLst.insertCh (14, “동의TV”); ◀ void insertCh (int nu, string na); cout << myLst.chNumOf (“시네마TV”); ◀ private: cout << myLst.chNameOf (2); ◀ int chn[100]; // channel numbers myLst.deleteNum(7); string name[100]; // channel names myLst.deleteName(“동의TV”); int size; … }; [4] [3] 14 동의TV [2] 2 CJ홈쇼핑 [1] size 3 7 시네마TV [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(7)

Fundamentals of class 클래스 문법 클래스의 예: 클래스의 선언 및 활용, 저장방식의 결정 class channelList { … public: channelList myLst; string chNameOf (int nu); // class channelList myLst; int chNumOf (string na); myLst.insertCh (7, “시네마TV”); void deleteNum (int nu); myLst.insertCh (2, “CJ홈쇼핑”); void deleteName (string na); myLst.insertCh (14, “동의TV”); void insertCh (int nu, string na); cout << myLst.chNumOf (“시네마TV”); ◀ private: cout << myLst.chNameOf (2); ◀ int chn[100]; // channel numbers myLst.deleteNum(7); ◀ string name[100]; // channel names myLst.deleteName(“동의TV”); int size; … }; [4] [3] 14 동의TV [2] 2 CJ홈쇼핑 [1] size 3 7 시네마TV [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(8)

Fundamentals of class 클래스 문법 클래스의 예: 클래스의 선언 및 활용, 저장방식의 결정 class channelList { … public: channelList myLst; string chNameOf (int nu); // class channelList myLst; int chNumOf (string na); myLst.insertCh (7, “시네마TV”); void deleteNum (int nu); myLst.insertCh (2, “CJ홈쇼핑”); void deleteName (string na); myLst.insertCh (14, “동의TV”); void insertCh (int nu, string na); cout << myLst.chNumOf (“시네마TV”); private: cout << myLst.chNameOf (2); int chn[100]; // channel numbers myLst.deleteNum(7); ◀ string name[100]; // channel names myLst.deleteName(“동의TV”); int size; … }; [4] [3] 14 동의TV [2] 2 CJ홈쇼핑 [1] size 2 [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(9)

Fundamentals of class 클래스 문법 클래스의 예: 클래스의 선언 및 활용, 저장방식의 결정 class channelList { … public: channelList myLst; string chNameOf (int nu); // class channelList myLst; int chNumOf (string na); myLst.insertCh (7, “시네마TV”); void deleteNum (int nu); myLst.insertCh (2, “CJ홈쇼핑”); void deleteName (string na); myLst.insertCh (14, “동의TV”); void insertCh (int nu, string na); cout << myLst.chNumOf (“시네마TV”); private: cout << myLst.chNameOf (2); int chn[100]; // channel numbers myLst.deleteNum(7); ◀ string name[100]; // channel names myLst.deleteName(“동의TV”); ◀ int size; … }; [4] [3] [2] 14 동의TV [1] size 2 2 CJ홈쇼핑 [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(10)

Fundamentals of class 클래스 문법 클래스의 예: 클래스의 선언 및 활용, 저장방식의 결정 class channelList { … public: channelList myLst; string chNameOf (int nu); // class channelList myLst; int chNumOf (string na); myLst.insertCh (7, “시네마TV”); void deleteNum (int nu); myLst.insertCh (2, “CJ홈쇼핑”); void deleteName (string na); myLst.insertCh (14, “동의TV”); void insertCh (int nu, string na); cout << myLst.chNumOf (“시네마TV”); private: cout << myLst.chNameOf (2); int chn[100]; // channel numbers myLst.deleteNum(7); string name[100]; // channel names myLst.deleteName(“동의TV”); ◀ int size; … }; [4] [3] [2] [1] size 2 CJ홈쇼핑 [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(11)

Fundamentals of class 클래스 문법 멤버함수의 구현 class channelList { string channelList::chNameOf (int nu) { public: for (int i=0; i<size; i++) { string chNameOf (int nu); ◀ if (nu == chn[i]) { int chNumOf (string na); return name[i]; void deleteNum (int nu); } void deleteName (string na); } void insertCh (int nu, string na); return 0; // not found private: } int chn[100]; // channel numbers string name[100]; // channel names int size; }; [4] [3] 14 동의TV [2] 2 CJ홈쇼핑 [1] size 3 7 시네마TV [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(12)

Fundamentals of class 클래스 문법 멤버함수의 구현 class channelList { void channelList::deleteNum (int nu) { public: int i = 0; string chNameOf (int nu); for (; i<size; i++) { int chNumOf (string na); if (nu == chn[i]) break; void deleteNum (int nu); ◀ } void deleteName (string na); if (i==size) return; // not found void insertCh (int nu, string na); size--; private: for (; i<size; i++;) { int chn[100]; // channel numbers chn[i] = chn[i+1]; string name[100]; // channel names name[i] = name[i+1]; int size; } }; } [4] [3] 14 동의TV [2] 2 CJ홈쇼핑 [1] size 3 7 시네마TV [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(13)

Fundamentals of class 클래스 문법 멤버함수의 구현 class channelList { void public: channelList::insertCh (int nu, string na) { string chNameOf (int nu); if (size==100) return; // memory full int chNumOf (string na); chn[size] = nu; void deleteNum (int nu); name[size] = na; void deleteName (string na); size++; void insertCh (int nu, string na); ◀ } private: int chn[100]; // channel numbers string name[100]; // channel names int size; }; [4] [3] 14 동의TV [2] 2 CJ홈쇼핑 [1] size 3 7 시네마TV [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(14)

Fundamentals of class 클래스 문법 멤버함수의 구현: 생성자와 소멸자 class channelList { … public: channelList myLst; ◀ string chNameOf (int nu); // class channelList myLst; int chNumOf (string na); myLst.insertCh (7, “시네마TV”); void deleteNum (int nu); … void deleteName (string na); void insertCh (int nu, string na); channelList::channelList ( ) { channelList ( ); // constructor size = 0; ~channelList ( ); // destructor } private: int chn[100]; // channel numbers string name[100]; // channel names int size; }; [4] [3] [2] [1] size [0] chn name Dept. of Multimedia Engineering, DongEui Univ.(15)

An Implementation of channel list 클래스의 활용 클래스의 예: 채널 class channel { public: channel ( ) { }; // default constructor channel (int ch, string na) { // constructor chn = ch; name = na; }; public: // public으로 수정 ★★★ int chn; // channel number string name; // channel name } … channel mych1 (14, “동의TV”); channel mych2; mych2.chn = 2; mych2.name = “CJ홈쇼핑”; cout << mych1.chn << mych2.name << endl; [4] [3] [2] [1] size [0] chn name mych1.chn mych1.name mych1 14 동의TV mych2 2 CJ홈쇼핑 Dept. of Multimedia Engineering, DongEui Univ.(16)

An Implementation of channel list 클래스의 활용 클래스의 예: 채널목록 (정렬되지 않은 순서로 저장) class channel { … } … class channelList { channelList myLst; public: myLst.insertCh (7, “시네마TV”); string chNameOf (int nu); myLst.insertCh (2, “CJ홈쇼핑”); int chNumOf (string na); myLst.insertCh (14, “동의TV”); void deleteNum (int nu); cout << myLst.chNumOf (“시네마TV”); void deleteName (string na); cout << myLst.chNameOf (2); void insertCh (int nu, string na); myLst.deleteNum(7); channelList ( ) { // constructor myLst.deleteName(“동의TV”); size = 0; … } private: channel ch[100]; // class channel ch[100]; int size; }; [4] [3] [2] [1] size [0] class channel Dept. of Multimedia Engineering, DongEui Univ.(17)

An Implementation of channel list 클래스의 활용 클래스의 예: 채널목록 (정렬되지 않은 순서로 저장) class channel { … } int class channelList { chNumOf (string na) { public: for (int i=0; i<size; i++) { string chNameOf (int nu); if (na == ch[i].name) return ch[i].chn; int chNumOf (string na); ◀ } void deleteNum (int nu); return 0; // not found void deleteName (string na); } void insertCh (int nu, string na); channelList ( ) { // constructor size = 0; } private: channel ch[100]; // class channel int size; }; [4] [3] [2] [1] size [0] class channel Dept. of Multimedia Engineering, DongEui Univ.(18)

An Implementation of channel list 클래스의 활용 클래스의 예: 채널목록 (정렬되지 않은 순서로 저장) class channel { … } void class channelList { insertCh (int nu, string na) { public: if (size==100) return; string chNameOf (int nu); ch[size].chn = nu; int chNumOf (string na); ch[size].name = na; void deleteNum (int nu); size++; void deleteName (string na); } void insertCh (int nu, string na); ◀ channelList ( ) { // constructor size = 0; } private: channel ch[100]; // class channel int size; }; [4] [3] [2] [1] size [0] class channel Dept. of Multimedia Engineering, DongEui Univ.(19)

An Implementation of channel list 클래스의 활용 클래스의 예: 채널목록 (채널 번호가 증가하는 순서로 저장) class channel { … } string class channelList { chNameOf (int nu) { public: return binSearch(nu, 0, size-1); string chNameOf (int nu); ◀ } int chNumOf (string na); void deleteNum (int nu); string binSearch(int nu, int l, int h) { void deleteName (string na); while (u>=l) { void insertCh (int nu, string na); int m = (u+l)/2; channelList ( ) { size = 0; }; if (na==ch[m].chn) return ch[m].name; protected: else if (na>ch[m].nu) l = m+1; string binSearch(int nu, int l, int u); ◀ else h = m-1 private: } channel ch[100]; // class channel return -1; // not found int size; } }; Dept. of Multimedia Engineering, DongEui Univ.(20)

practice makes perfect!!! summaries C++클래스: 추상자료형의 구현 클래스의 기초 클래스 구현 예 1: 채널목록 추상자료형의 (정렬되지 않은 목록) 구현 클래스 구현 예 2: 채널목록 추상자료형의 (채널번호 순으로 정렬된 목록) 구현 클래스를 자유자재로 쓸 수 있도록 연습합시다. practice makes perfect!!! Dept. of Multimedia Engineering, DongEui Univ.(21)