2장. 추상 자료형 학습목표 프로그램 설계를 위해 추상 자료형을 정의해야 하는 이유를 이해한다.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
1 1 1 장. 객체지향 방법론  객체지향 방법론 본문의 C++ 코드를 이해하기 위해 추상 자료형 개념과 어떻게 일치하는지 이해하기 위해 객체 지향 방법론의 장점은 사용과 구현을 분리하는데 있음  학습목표 프로그램 설계 차원에서 객체지향 방법론의 개념이해 C++ 의.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
10. 예외 처리.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Entity Relationship Diagram
제 9 장 구조체와 공용체.
18장. 방화벽 컴퓨터를 만들자.
제9장 추상 데이터 타입 및 모듈 (Abstract Data Type & Module)
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
C++ Programming: Sample Programs
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
컴퓨터응용과학부 Java Enterprize(DB) 제 15 주
23장. 구조체와 사용자 정의 자료형 2.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
11장. 1차원 배열.
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바 5.0 프로그래밍.
27장. 모듈화 프로그래밍.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Go Lang 리뷰 이동은.
19. 함수 포인터와 void 포인터.
Lesson 2. 기본 데이터형.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
6강. 객체지향 프로그램의 시작 객체지향 이전의 프로그래밍 객체지향의 등장 배경과 이해 메소드의 이해
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 5.0 프로그래밍.
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
Fucntion 요약.
Internet Computing KUT Youn-Hee Han
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
데이터 동적 할당 Collection class.
C# 07장. 객체 지향 개념.
뇌를 자극하는 Solaris bible.
Chapter 13. 템플릿(Template) 1
구조체 (Structure).
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
Part 2 개념적 데이터 모델 Copyright © 2006 by Ehan Publishing Co. All rights reserved.
3. 모듈 (5장. 모듈).
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
학습내용 프로토콜 계층화 OSI 모델의 용어 및 기능 개체 서비스 접근점 (N) 프로토콜과 (N) 서비스 서비스 프리미티브
발표자 : 이지연 Programming Systems Lab.
구조체(struct)와 공용체(union)
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
.Net FrameWork for Web2.0 한석수
제 4 장 Record.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
7 생성자 함수.
6 객체.
Presentation transcript:

2장. 추상 자료형 학습목표 프로그램 설계를 위해 추상 자료형을 정의해야 하는 이유를 이해한다. 추상 자료형의 구성요소가 무엇인지 파악한다. 객체지향 언어가 추상 자료형을 정의하기에 유리한 이유를 이해한다. 정보의 은닉, 인캡슐레이션 등 용어의 의미를 파악한다.

추상 자료형 자료구조보다 더 중요한 개념 추상 자료형 抽象 資料型 ADT: Abstract Data Type 추상 데이터 타입 프로그램의 대상이 되는 사물이나 현상을 추상적으로 정의 추상적 정의이기 때문에 일반적인 정의 특수한 경우에 모두 사용가능 추상적 정의이기 때문에 세부 구현내용을 몰라도 사용가능

추상 자료형: 사용과 구현의 분리 사용자와 구현자를 분리 자료형이 추상적으로 정의되어 있다. 구체적인 구현내용은 구현자만 알고 있다. 사용자로서는 구현내용을 몰라도 불러다 쓰기만 하면 된다.

추상화의 특징 단순 자료형 추상 자료형 추상화 일반화 Int x, char y; -> 볼트, 너트, 못 단위로 집을 짓기 리스트 -> 화장실, 침실, 거실 단위로 집을 짓기 추상화 단지 추상적으로 그런 것이 있다고 가정하고 집을 설계하라. 구현이 가능할지, 누가 구현할지, 언제까지 될지는 고려치 말라. 추상화 수준을 높임으로써 프로그램 설계가 용이해 짐 일반화 일반적으로 필요할 것 같은 작업을 정의 특수한 경우의 작업, 구체적 작업은 회피 범용성이 높아짐

추상화 건물을 추상화한 예

추상화 얼음 제조기의 추상화 ADT IceDispenser : GetMeChilledWater( ); 냉수 주시요.       : GetMeCrushedIce( );     부순 얼음 주시요.       : GetMeCubeIce( );        각진 얼음 주시요.

추상화 필요한 작업만 명시하면 됨. GetMeChiledWater GetMeCrushedIce GetMeCubeIce IceDispencer 추상 자료형 추상 명령

구현자 관점 작업을 수행하기 위한 구체적인 방법과 위한 데이터 집합 ADT IceDispenser 자료구조 - Data       : Water, Motor, Button   물, 모터, 버튼 - Operation        : GetMeChilledWater( )   냉수 주시요의 구체적 구현          {        }               : GetMeCrushedIce( )     부순 얼음 주시요의 구체적 구현          {         }        : GetMeCubeIce( )        각진 얼음 주시요의 구체적 구현          {         } 자료구조 물, 모터, 버튼 등의 데이터 집합 데이터는 그 데이터를 가공할 작업을 전제로 설계되어야 함 작업이 가장 효율적으로 수행될 수 있도록 조직화된 데이터 집합 구조체(Structure)로 가져갈지 아니면 배열(Array)로 가져갈지 사용자 입장에서는 자료구조에는 관심이 없음

추상 자료형을 보는 관점 사용자 관점과 구현자 관점의 추상 자료형 사용자 관점의 추상 자료형 구현자 관점의 추상 자료형 작업명과 용도 1) 작업의 구체적 구현방법 2) 구현을 위한 데이터 집합

추상 자료형과 C 언어 인터페이스 파일과 구현파일의 분리 헤더 파일의 예 헤더 파일 절차적 언어 헤더 파일(.h): 인터페이스 파일, 소스 파일(.c): 구현 파일 헤더 파일의 예 typedef struct {  int Water;    물의 양             int Motor;    모터 회전수     int Button;   버튼 1, 2, 3 } materialType; void GetMeChilledWater( );     냉수 주시요 void GetMeCrushedIce( );      부순 얼음 주시요 void GetMeCubeIce( );          각진 얼음 주시요 헤더 파일 함수 프로토타입만 보여 줌 블랙 박스(정보의 은닉, 구현을 볼 수 없음) 계약서 역할(작업의 정의를 자세하고 정확하게 기술) 절차적 언어 독자적 추상 자료형(Ice Dispencer)을 인정하지 않음 따라서 추상 자료형 이름을 선언할 수 없음 필요한 작업명과 작업이 가해지는 데이터 타입만을 명시

추상 자료형과 C++ 언어 개념적 일치 선언의 일치 사용과 구현의 분리 작업을 기준으로 정의된 데이터 타입 사용자에게 구현방법을 숨김 선언의 일치 추상 자료형 선언 = 클래스 선언 추상 자료형의 작업 = 객체 클래스의 메시지

인캡슐레이션 첫째 의미 둘째 의미 캡슐 벽(Wall, Barrier)때문에 밖에서 안을 들여다 볼 수 없음 (정보의 은닉) 객체 밖의 사용자가 객체 안의 구현방법이나 자료구조를 알 수 없음 캡슐 외부와 내부 사이에 열린 유일한 창구는 메시지 둘째 의미 하나 이상의 요소를 캡슐이 둘러싸고 있음 작업 구현방법과 자료구조를 묶어서 캡슐화 작업을 떠나서 자료구조를 생각할 수는 없기 때문에 묶어서 정의

인캡슐레이션 구현방법 자료구조 추상 자료형 Message Implementation View Interface View Capsule =Wall =Barrier 추상 자료형 Interface View Message Return Value Implementation View 구현방법 자료구조

추상 자료형과 C++ 언어 추상 자료형 “얼음 제조기” 멤버 함수는 멤버 데이터의 상태를 바꿔가면서 원하는 기능을 수행 class IceDispenser                     클래스 얼음 제조기       { public:        void GetMeChilledWater( ); 냉수 주시요        void GetMeCrushedIce( );     부순 얼음 주시요        void GetMeCubeIce( );           각진 얼음 주시요   private:        int Water, Motor, Button;       메시지 실행을 위한 데이터 집합 } 멤버 함수는 멤버 데이터의 상태를 바꿔가면서 원하는 기능을 수행 GetMeCrushedIce( )는 Water가 얼음으로 바뀌도록 상태 변화를 유도

용어 정리 객체지향 관련 용어 정리 추상 자료형 ADT = Operation + Collection of Data 일반 용어 Program Algorithm Data Structure 객체지향 방법론 Class Message(Interface View) or Method(Implementation View) State Variable or Instance Variable C++   Member Function Member Data