8_comp-structure

Download Report

Transcript 8_comp-structure

Structure & Class
Structure & Class
 프로그램에서 처리할 어떤 자료가 여러 종류 값의 묶
음이어야 할 때, 한 자료 구조로 표현하는 구조체
(structure) 방식을 사용한다.
 구조체를 확장하여 자료 구조와 그와 관련된 함수들
을 하나로 묶는 것을 클래스(Class)라고 한다. 클래스
는 프로그램의 중심이고, C++를 잘 알기 위해서는 클
래스의 사용에 익숙해져야 한다.



RTDCS, HUFS
구조체(Struct)
클래스(Class)의 개념
멤버(Member)란?
2
Structure
 한 가지 대상에 대한 관련된 데이터를 통합하여 새로
운 자료형으로 표현
struct 구조체 이름{
/* 구조체 각 필드를 정의 한다. */
자료형1 필드 이름1;
자료형2 필드 이름2;
............................
자료형n 필드 이름n
};
RTDCS, HUFS
3
Structure
 (예) 어떤 회사에서 직원(Employee)에 대한 정보를
담는 구조체: 직원에 대해서는 직원 번호, 이름, 근무
부서, 주소, 전화번호 등에 대한 값이 저장되어야 한다.
struct employee{
int emp_id;
char name[20];
char dept[10];
char address[30];
char phone[12];
};
RTDCS, HUFS
4
Structure 변수 선언
struct 구조체 이름 변수 이름;
struct employee joon;
struct employee kim;
RTDCS, HUFS
5
Structure 필드 값 지정
구조체의 변수이름.필드이름
joon.id = 95043424;
joon.name = "Joon Lee";
joon.dept = "service";
joon.address = "7 Hongji, Chongro, Seoul";
joon.phone = "555-3456";
RTDCS, HUFS
6
Structure 초기화
구조체 변수 이름 = {
필드1의 초기값,
필드2의 초기값,
.........
필드n의 초기값
};
RTDCS, HUFS
7
Structure 초기화
stuct employee joon = {
95043424,
"Joon Lee",
"Service",
"7 Hongji, Chongro, Seoul",
"555-3456",
};
RTDCS, HUFS
8
예제
 고객 번호 19557, 이름 "Tom", 주소 "Seoul,
KOREA", 전화번호 "02-777-7777", 월평균 구매액
356천원인 새 고객에 대해 각 필드 이름과 그 필드에
저장된 값을 출력하는 프로그램
RTDCS, HUFS
9
예제
#include <iostream.h>
struct customer {
int id;
char name[20];
char address[30];
char phone[12];
int amount;
};
RTDCS, HUFS
10
예제
main()
{
struct customer member = { 19557,
"Tom",
"Seoul, KOREA",
"02-777-7777",
356 };
cout
cout
cout
cout
cout
<<
<<
<<
<<
<<
"ID = " << member.id << endl;
"NAME = " << member.name << endl;
"ADDRESS = "<< member.address << endl;
"PHONE =" << member.phone << endl;
"AMOUNT = " << member.amount << endl;
}
RTDCS, HUFS
11
출력
ID = 19557
NAME = Tom
ADDRESS = Seoul, KOREA
PHONE = 02-777-7777
AMOUNT = 356
RTDCS, HUFS
12
예제
 삼각형을 세 변의 길이로 나타내기 위한 구조체를 정
의하고, 세 변의 길이를 입력하여 이 구조체 변수의 각
필드값으로 저장한 뒤, 정삼각형과 이등변삼각형을 구
별하는 프로그램
#include <iostream.h>
struct three {
int Aside;
int Bside;
int Cside;
} triangle;
RTDCS, HUFS
13
예제
main()
{
cout << "삼각형의 각 변의 길이를 입력하시오 : " ;
cin >> triangle.Aside; cin >> triangle.Bside;
cin >> triangle.Cside;
if((triangle.Aside==triangle.Bside) ||
(triangle.Bside==triangle.Cside) ||
(triangle.Cside==triangle.Aside))
{
if((triangle.Aside==triangle.Bside) &&
(triangle.Aside==triangle.Cside))
cout << "정삼각형";
else
cout << "이등변 삼각형";
}
else
cout << "그냥 삼각형";
}
RTDCS, HUFS
14
Class
 클래스 (CLASS) = 관련 있는 자료형 + 그 자료형을
다루는 함수들(member functions)
자료 구조 선언부
함수 선언
함수 선언
함수 선언
RTDCS, HUFS
15
Class
 자료 구조와 관련 있는 함수를 함께 묶어서 하나의 클
래스를 선언하면, 이 클래스는 독립적인 개체가 되어
문제가 발생했을 때나, 변화가 요구될 때, 프로그램의
다른 요소들을 고려하지 않고, 클래스 내에서 해결할
수 있다.
 고유한 자료 구조와 그 자료 구조를 다루는 함수들이
존재한다면, 클래스로 선언될 수 있다.
int value;
Assign_value( )
Print_value( )
RTDCS, HUFS
16
Class 정의
class 클래스의이름 {
[private:]
변수 선언;
public :
클래스의 함수들;
};
 멤버 (Member): 클래스 내에 선언된 변수나, 함수들
멤버들은 private 또는 public으로 선언
 private 멤버: 정의된 클래스 내의 함수들에 의해서만 사용
 public 멤버: 정의된 class내와 외부 function에 의해서도 사용
 디폴트로 모든 멤버들을 private로 간주
RTDCS, HUFS
17
Class 선언
class a_value {
int value;
public :
void assign_value(int num) { value = num;}
int print_value() { return value;}
};
RTDCS, HUFS
18
예
#include <iostream.h>
class a_value {
// private part of the class
int value;
public: // public part of the class
void set_value(int num) {value = num;}
int get_value() { return value; }
};
RTDCS, HUFS
19
예
main()
{
a_value value1, value2;
value1.set_value(10);
value2.set_value(20);
cout << value1.get_value() << endl;
cout << value2.get_value() << endl;
return 0;
}
10
20
RTDCS, HUFS
20
예: 기계의 부품
#include <iostream.h>
class part {
int model_no;
int part_no;
float price;
public:
void set_input(int m_no, int p_no, float p)
{
model_no = m_no;
part_no = p_no;
price = p;
}
void get_output()
{
cout << "Model Number : " << model_no << endl;
cout << "Part Number : " << part_no << endl;
cout << "Price : $ " << price << endl;
}
};
RTDCS, HUFS
21
예
void main()
{
part part1;
part1.set_input(5544, 227, 300.89);
part1.get_output();
}
Model Number : 5544
Part Number : 227
Price : $ 300
RTDCS, HUFS
22
문제
1. 학생의 성적을 다루는 클래스를 만들고 예를 들어 클
래스의 작업을 나타내 보자.(단, 학생의 이름, 영어,
수학 , 학점 만이 클래스의 자료라고 가정하자.)
2. 삼각형을 클래스로 나타내 보자. 멤버 함수로는 길이
와 면적을 구하는 함수들을 포함시키도록 하자.
3. 위의 클래스를 사용하는 프로그램을 각각 작성하고
실습전에 레포트로 완성하고 실습시에 동작을 확인하
여 수정된 레포트를 제출한다.
RTDCS, HUFS
23