1 / 23

Structure & Class

Structure & Class. Structure & Class. 프로그램에서 처리할 어떤 자료가 여러 종류 값의 묶음이어야 할 때 , 한 자료 구조로 표현하는 구조체 (structure) 방식을 사용한다 . 구조체를 확장하여 자료 구조와 그와 관련된 함수들을 하나로 묶는 것을 클래스 (Class) 라고 한다 . 클래스는 프로그램의 중심이고 , C++ 를 잘 알기 위해서는 클래스의 사용에 익숙해져야 한다 . 구조체 (Struct) 클래스 (Class) 의 개념 멤버 (Member) 란 ?.

Download Presentation

Structure & Class

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Structure & Class

  2. Structure & Class • 프로그램에서 처리할 어떤 자료가 여러 종류 값의 묶음이어야 할 때, 한 자료 구조로 표현하는 구조체(structure) 방식을 사용한다. • 구조체를 확장하여 자료 구조와 그와 관련된 함수들을 하나로 묶는 것을 클래스(Class)라고 한다. 클래스는 프로그램의 중심이고, C++를 잘 알기 위해서는 클래스의 사용에 익숙해져야 한다. • 구조체(Struct) • 클래스(Class)의 개념 • 멤버(Member)란?

  3. Structure • 한 가지 대상에 대한 관련된 데이터를 통합하여 새로운 자료형으로 표현 struct 구조체 이름{ /* 구조체 각 필드를 정의 한다. */ 자료형1 필드 이름1; 자료형2 필드 이름2; ............................ 자료형n 필드 이름n };

  4. Structure • (예) 어떤 회사에서 직원(Employee)에 대한 정보를 담는 구조체: 직원에 대해서는 직원 번호, 이름, 근무부서, 주소, 전화번호 등에 대한 값이 저장되어야 한다. struct employee{ int emp_id; char name[20]; char dept[10]; char address[30]; char phone[12]; };

  5. Structure 변수 선언 struct 구조체 이름 변수 이름; struct employee joon; struct employee kim;

  6. Structure 필드 값 지정 구조체의 변수이름.필드이름 joon.id = 95043424; joon.name = "Joon Lee"; joon.dept = "service"; joon.address = "7 Hongji, Chongro, Seoul"; joon.phone = "555-3456";

  7. Structure 초기화 구조체 변수 이름 = { 필드1의 초기값, 필드2의 초기값, ......... 필드n의 초기값 };

  8. Structure 초기화 stuct employee joon = { 95043424, "Joon Lee", "Service", "7 Hongji, Chongro, Seoul", "555-3456", };

  9. 예제 • 고객 번호 19557, 이름 "Tom", 주소 "Seoul, KOREA", 전화번호 "02-777-7777", 월평균 구매액 356천원인 새 고객에 대해 각 필드 이름과 그 필드에 저장된 값을 출력하는 프로그램 

  10. 예제 #include <iostream.h> struct customer { int id; char name[20]; char address[30]; char phone[12]; int amount; };

  11. 예제 main() { struct customer member = { 19557, "Tom", "Seoul, KOREA", "02-777-7777", 356 }; cout << "ID = " << member.id << endl; cout << "NAME = " << member.name << endl; cout << "ADDRESS = "<< member.address << endl; cout << "PHONE =" << member.phone << endl; cout << "AMOUNT = " << member.amount << endl; }

  12. 출력 ID = 19557 NAME = Tom ADDRESS = Seoul, KOREA PHONE = 02-777-7777 AMOUNT = 356

  13. 예제 • 삼각형을 세 변의 길이로 나타내기 위한 구조체를 정의하고, 세 변의 길이를 입력하여 이 구조체 변수의 각 필드값으로 저장한 뒤, 정삼각형과 이등변삼각형을 구별하는 프로그램 #include <iostream.h> struct three { int Aside; int Bside; int Cside; } triangle;

  14. 예제 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 << "그냥 삼각형"; }

  15. 자료 구조 선언부 함수 선언 함수 선언 함수 선언 Class • 클래스 (CLASS) = 관련 있는 자료형 + 그 자료형을 다루는 함수들(member functions)

  16. int value; Assign_value( ) Print_value( ) Class • 자료 구조와 관련 있는 함수를 함께 묶어서 하나의 클래스를 선언하면, 이 클래스는 독립적인 개체가 되어 문제가 발생했을 때나, 변화가 요구될 때, 프로그램의 다른 요소들을 고려하지 않고, 클래스 내에서 해결할 수 있다. • 고유한 자료 구조와 그 자료 구조를 다루는 함수들이 존재한다면, 클래스로 선언될 수 있다.

  17. Class 정의 class 클래스의이름 { [private:] 변수 선언; public : 클래스의 함수들; }; • 멤버 (Member): 클래스 내에 선언된 변수나, 함수들멤버들은 private 또는 public으로 선언 • private 멤버: 정의된 클래스 내의 함수들에 의해서만 사용 • public 멤버: 정의된 class내와 외부 function에 의해서도 사용 • 디폴트로 모든 멤버들을 private로 간주

  18. Class 선언 class a_value { int value; public : void assign_value(int num) { value = num;} int print_value() { return value;} };

  19. #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; } };

  20. 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

  21. 예: 기계의 부품 #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; } };

  22. void main() { part part1; part1.set_input(5544, 227, 300.89); part1.get_output(); } Model Number : 5544 Part Number : 227 Price : $ 300  

  23. 문제 1. 학생의 성적을 다루는 클래스를 만들고 예를 들어 클래스의 작업을 나타내 보자.(단, 학생의 이름, 영어, 수학 , 학점 만이 클래스의 자료라고 가정하자.) 2. 삼각형을 클래스로 나타내 보자. 멤버 함수로는 길이와 면적을 구하는 함수들을 포함시키도록 하자. 3. 위의 클래스를 사용하는 프로그램을 각각 작성하고 실습전에 레포트로 완성하고 실습시에 동작을 확인하여 수정된 레포트를 제출한다.

More Related