Upload
yeonah-ki
View
434
Download
0
Embed Size (px)
Citation preview
게임 프로그래밍 입문
기연아
함수
게임 프로그래밍
함수 인자 전달 방식 Call-by-value
값을 복사해서 함수로 넘겨주는 방식 값만 복사하는 것이기 때문에 원본의 값이 변경되지 않음 고비용 , 복사손실의 문제 발생 가능
Call-by-reference 주소의 값을 함수로 넘겨주는 방식 원본의 값이 변경됨
Call-by-value
Call-by-reference
구조체 (Struct)
게임 프로그래밍
구조체란 ? 서로 다른 자료형을 묶어서 변수로 사용할 수 있음 이들을 묶어서 새롭게 정의할 수 있는 자료형
구조체 사용하기 구조체를 초기화하여 하나의 변수처럼 사용 가능
구조체 사용하기 구조체를 초기화하여 하나의 변수처럼 사용 가능
구조체 사용하기 한 번에 여러 개의 구조체 값을 초기화할 수 있음
구조체 사용하기 구조체 복사하여 사용하기
구조체 사용하기 구조체 값을 입력받아서 사용하기
실습 1 나만의 새로운 구조체를 선언 구조체 값을 입력하는 부분을 함수화해서 만들어보기 구조체의 값을 출력하는 부분을 함수화해서 만들어보기
01 #include<iostream>02 using namespace std;03 struct namecard{04 char name[20];05 char job[30];06 char tel[20];07 char email[40];08 };09 10 void structPrn(namecard temp); 11 void structInput(namecard &temp);12 13 void main()14 {15 namecard x, y, z;16 17 structInput(x); // 함수의 호출18 structInput(y);19 structInput(z);20 21 cout<<"\n 이름 직업 연락처 이메일 ";22 cout<<"\n===========================================================";23 structPrn(x); 24 structPrn(y);25 structPrn(z);26 cout<<"\n=======================================================\n";27 }28 29 void structPrn(namecard temp) // 함수의 정의30 {31 cout<<"\n"<<temp.name<<"\t"<<temp.job<<"\t"<<temp.tel<<"\t"<<temp.email;32 }33 34 void structInput(namecard &temp)35 {36 cout<<"\n이름을 입력하세요=>";37 cin>>temp.name;38 cout<<"직업을 입력하세요=>";39 cin>>temp.job;40 cout<<"연락처를 입력하세요=>";41 cin>>temp.tel;42 cout<<"이메일을 입력하세요=>";43 cin>>temp.email;44 }
클래스 (Class)
게임 프로그래밍
클래스란 ? 함수를 멤버변수로 갖는 구조체의 확장판
자료와 함수를 하나로 묶어서 사용 객체를 정의하는 수단
클래스에서 생성된 것을 객체라고 부름 이 객체를 중심으로 프로그래밍이 진행됨
객체지향 프로그래밍이란 ? 객체를 중심으로 하는 프로그래밍
Object-oriented Programming
새로운 자료형 멤버 변수와 멤버 함수로 구성되어 데이터의 저장과 처리를 모두 수행할 수 있음
클래스의 정의
클래스 멤버의 접근 권한 private
클래스 멤버 함수에서만 접근 가능 ( 데이터 은닉 ) private: 을 붙이지 않으면 default 를 private 으로 인식함 멤버 변수를 주로 private 로 설정
public 객체가 선언되어 있는 영역에서 어디든지 사용 가능 Public: 아래에 적어야함 멤버 변수를 처리하기 위한 목적으로 작성하는 멤버 함수는 주로 public으로 설정
클래스 멤버의 접근 권한
생성자와 소멸자 생성자
객체를 생성할 때 기본 자료형처럼 초기값을 줄 수 있는데 그 것을 가능하게 하는 것이 생성자임 생성자는 멤버함수로 사용 생성자의 이름은 클래스 이름과 동일하게 사용 생성자는 자료형 ( 반환값의 유형 ) 을 지정하지 않음 생성자는 객체를 선언 / 생성할 때 컴파일러에 의해 자동으로 호출 객체의 초기화는 멤버변수의 초기화를 의미
소멸자 객체가 소멸될 때 자동으로 호출되며 객체를 정리하는 작업을 하는 멤버함수임 생성자와 마찬가지로 클래스 이름으로 함수 이름을 사용 생성자와 구분하기 위해 앞에 ~( 틸드 ) 기호를 붙임 생성자와 달리 소멸자는 다중정의를 할 수 없음
생성자와 소멸자 실제로 class 에서 생성자와 소멸자가 정상적으로 호출되는지 확인해보자
실습 2 두 개의 숫자를 설정하는 함수 두 개의 숫자를 더하는 함수 두 개의 숫자를 빼는 함수 위 세개의 함수를 클래스에 정의하여 덧셈 , 뺄셈을 수행하도록 구현
#include <iostream>using namespace std;class calculate{private:
int num1;int num2;
public:int add();int minus();void setNum();
};void calculate::setNum(){
num1 = 10;num2 = 5;
}int calculate::add(){ return num1+num2;}int calculate::minus(){
return num1-num2;}int main(){ int sum;
int sub;calculate a;a.setNum();sum = a.add();sub = a.minus();cout << "sum is " << sum << " sub is " << sub << endl;return 0;
}
클래스 상속 하나의 클래스를 또 다른 클래스에서 사용할 수 있도록 물려주는 개념