Microsoft PowerPoint - 5주_강의노트
|
|
- 주봉 제
- 5 years ago
- Views:
Transcription
1 C++ 프로그래밍 강의노트 #5: 5 장클래스특징 I 5.1 복사생성자 (copy constructor) 5.2 객체포인터와객체배열 5.3 this 포인터 5.4 friend 함수 5.5 실습문제 담당교수 : 조재수 jaesoo27@kut.ac.kr 1 학습내용 복사생성자 (copy constructor) 객체포인터와객체배열 this 포인터 friend 함수 실습문제 2/50 1
2 복사생성자 (copy constructor) class myclass int a; myclass() cout << "myclass() 생성자호출 << endl; myclass(int x) cout << "myclass(int x) 생성자호출 <<endl; a = x; myclass(const myclass &y) cout << "myclass(const myclass &y) 생성자호출 <<endl; a = y.a; int get (); ; int myclass::get() return a; myclass ob1; // myclass() 생성자호출 // myclass(int x) 생성자호출, C스타일의초기화 myclass ob2 = 20; // a를 20으로초기화 myclass ob3(10); // myclass(int x) 생성자호출, C++ 스타일 myclass ob4(ob3); // myclass(const myclass &y) 생성자호출 myclass ob5 = ob4; // myclass(const myclass &y) 생성자호출 cout << "ob1 객체 a= " << ob1.get() << endl; cout << "ob2 객체 a= " << ob2.get() << endl; cout << "ob3 객체 a= " << ob3.get() << end; cout << "ob4 객체 a= " << ob4.get() << end; cout << "ob5 객체 a= " << ob5.get() << end; 3/50 복사생성자 (copy constructor) 앞예제프로그램의실행결과 myclass() 생성자호출 myclass(int x) 생성자호출 myclass(int x) 생성자호출 myclass(const myclass &y) 생성자호출 myclass(const myclass &y) 생성자호출 ob1 객체 a = ob2 객체 a = 20 ob3 객체 a = 10 ob4 객체 a = 10 ob5 객체 a = 복사생성자함수란? 자기자신과같은형태의 ( 자료형 ) 객체를인자로받을수있는생성자함수 생성자함수의오버로딩된형태 매개변수선언에서 const 는반드시붙여주지않아도되지만, & 선언은반드시해주어야함 & 선언을하지않으면 -> 무한루프에빠져버린다.(?) -> 컴파일에러가발생 4/50 2
3 기본 (default) 복사생성자 1: 2: 3: 4: class myclass 5: int a, b; 6: 9: myclass(intx, inty) 10: cout << "myclass(int x) 생성자호출 <<endl; 11: a = x; 12: b = y; 13: 14: 15: void ShowData () 16: cout << "a: " << a << ' ' << "b: " << b << endl; 17: 17: ; 18: 19: 20: 24: 25: myclass ob1(10, 20); 26: myclass ob2(ob1); // myclass ob2 = ob1; 27: 28: ob1.showdata(); 29: ob2.showdata(); 30: 31: 32: 실행결과 a: 10 b: 20 a: 10 b: 20 기본 (default) 복사생성자함수 : 전달된매개객체와의멤버변수대멤버변수를복사 ( copy) 해주는일을수행하고, 컴파일러가자동으로삽입 class myclass int a, b; myclass(int x, int y) cout << "myclass(int x) 생성자호출 <<endl; a = x; b = y; // 기본 ( 디폴트 ) 복사생성자 myclass(const myclass &ob) a = ob.a; b = ob.b; int ShowData () cout << "a: " << a <<' ' << "b: " << b << endl; ; /50 사용자정의복사생성자 #include<iostream> class Person char *name; char *phone; int age; Person(char* _name, char* _phone, int _age); ~Person(); void ShowData(); ; Person::Person(char* _name, char* _phone, int _age) name=new char[strlen(_name)+1]; strcpy(name, _name); phone=new char[strlen(_phone)+1]; strcpy(phone, _phone); age=_age; Person::~Person() delete []name; delete []phone; void Person::ShowData() //name 포인터가가리키는주소값출력 printf("name=%d n, name); //phone 포인터가가리키는주소값출력 printf("phone=%d n, phone); cout<<"age: "<<age<<endl; Person p1("cho", " ", 36); Person p2=p1; // Person p2(p1); p1.showdata(); p2.showdata(); 위프로그램은런 - 타임에러가발생한다. 런 - 타임에러의원인은? 6/50 3
4 사용자정의복사생성자 실행결과는다음과같다 name = phone = age = 36 name = phone = age = /50 사용자정의복사생성자 p1 Person 객체의메모리구조 기본복사생성자함수를통한 p2 객체생성 8/50 4
5 사용자정의복사생성자 p2 객체의소멸 9/50 사용자정의복사생성자 다음과같은사용자정의복사생성자함수를추가하여실행해보자 Person::Person(const Person& p) name=new char[strlen(p.name)+1]; strcpy(name, p.name); phone=new char[strlen(p.phone)+1]; strcpy(phone, p.phone); age=p.age; /50 5
6 사용자정의복사생성자 실행결과는다음과같다 name = phone = age = 36 name = phone = age = /50 사용자정의복사생성자 사용자정의복사생성자에의한 p1, p2 객체메모리구조 12/50 6
7 사용자정의복사생성자 복사생성자가호출되는경우 1 객체생성시생성선언문에서다른객체를이용하여초기화할때 2 객체가매개변수로서함수에게전달될때 3 함수의반환값으로사용되는임시객체가만들어질때 복사생성자함수의일반적인형식 classname (const classname &obj) // body of copy constructor 13/50 #include <cstdlib> class array int *p; int size; array(int sz) // 생성자함수 p = new int[sz]; if (!p) exit(1); size = sz; cout << "Using 'normal' constructor n"; ~array() delete [] p; // 복사생성자 array(const array &a); void put(int i, int j) if (i>=0 && i<size) p[i] = j; int get(int i) return p[i]; ; array::array(const array &a) int i; size = a.size; p = new int[a.size]; // 복사본을위해메모리를할당한다. if (!p) exit(1); for(i=0; i<a.size; i++) p[i] = a.p[i]; // 내용을복사한다. cout << "Using copy constructor n"; /* 복사생성자함수정의 : 이경우, 메모리는복사본을위해할당되고, 이메모리의주소가 p 에저장된다. 이러한방법으로, p 는원본객체와같은메모리를가리키지않게된다. */ array num(10); // 보통의 생성자를호출한다. int i; // 값들을배열에저장한다. for(i=0; i<10; i++) num.put(i, i); // num 을출력한다. for(i=9; i>=0; i--) cout << num.get(i) << endl; // 또다른배열을생성하고 num 으로초기화한다. array x = num; // 이문장은복사생성자함수를호출한다. // x 를출력한다. for(i=0; i<10; i++) cout << x.get(i) << endl; 14/50 7
8 사용자정의복사생성자 다음은복사생성자함수를호출하는가? array a(10); array b(20); b = a; 이경우복사생성자함수호출? 15/50 #include <cstring> #include <cstdlib> void show(strtype x) // 전역함수의매개변수로객체전달 char *s; class strtype char *p; strtype(char *s); // 생성자함수 ~strtype() delete [] p; char *get() return p; ; s = x.get(); cout << s << " n"; strtype a("hello"), b("there"); strtype::strtype(char *s) int i; i = strlen(s)+1; p = new char [i]; if (!p) cout << "Allocation error n"; exit(1); strcpy(p, s); show(a); show(b); 위프로그램은런 - 타임에러가발생한다. 그이유는? 에러가생기지않도록복사생성자함수를정의해보자. 16/50 8
9 사용자정의복사생성자함수 strtype(const strtype &o); // 복사생성자함수 // 복사생성자함수 strtype::strtype(const strtype &o) cout << " 복사생성자함수호출! << endl; p = new char [strlen(o.p)+1]; // 복사본을위한메모리를할당한다. if (!p) cout << "Allocation error n"; exit(1); strcpy(p, o.p); // 문자열을복사본에복사한다. 참고로객체가매개변수로전달되는과정에서모든경우에대하여복사생성자함수를정의해줄필요는없다. 그객체의멤버변수중동적으로메모리를할당하는경우가아닌경우에는컴파일러가제공하는기본복사생성자함수를이용해도실행에러가발생하지않는다. 17/50 사용자정의복사생성자함수 class myclass int i, j; myclass(int x, int y) i=x; j=y; ~myclass() void ShowData() cout << "i= " << i << endl; cout << "j= " << j << endl; void fct(myclass a); ; void fct(myclass a) cout << " 함수 fct 입니다." << endl; a.showdata(); myclass ob1(1,2); ob1.showdata(); fct(ob1); // 함수호출시매개변수로객체전달 실행결과는다음과같으며실행에러는없다 i=1 j=2 함수 fct 입니다. i=1 j= 객체의멤버변수중동적으로메모리를할당하는경우가아닌경우에는컴파일러가제공하는기본복사생성자함수를이용해도실행에러가발생하지않는다. 18/50 9
10 #include <cstring> #include <cstdlib> class strtype char *p; strtype(char *s); // 생성자함수 ~strtype() delete [] p; void show(); strtype fct(); // 함수 fct 는리턴형으로 strtype 객체를리턴 ; strtype::strtype(char *s) int i; i = strlen(s)+1; p = new char [i]; if (!p) cout << "Allocation error n"; exit(1); strcpy(p, s); void strtype::show() cout << p << " n"; strtype strtype::fct() strtype temp("hi! This is function fct"); return temp; strtype a("hello"); a.show(); // b 객체가 fct 함수에서리턴된 temp 객체로초기화 strtype b = a.fct(); b.show(); 위프로그램은런 - 타임에러를발생한다. 이유는? 런 - 타임에러가발생하지않도록수정하라. 19/50 사용자정의복사생성자함수 fct 함수내에서의객체 temp 와 main 함수에서의객체 b 의메모리구조 20/50 10
11 사용자정의복사생성자함수 fct 함수내에서의 temp 객체와 main 함수에서의 b 객체메모리구조 21/50 연습문제 5-1 다음프로그램은 Book이라는클래스를나름대로설계하여그사용예를프로그램한것이다. 이것을실행하면실행에러가나타난다. 그이유를설명하고실행에러를수정하기위해코드를추가하라 class Book char *title; Book(char*); ~Book() delete title; void showtitle(void); ; Book::Book(char *string = NULL) title = new char[strlen(string)+1]; // 메모리동적할당 strcpy(title, string); void Book::showtitle(void) cout << title << endl; void main(void) Book Book1("A C++ Programming"); Book Book2 = Book1; Book1.showtitle(); Book2.showtitle(); /50 11
12 연습문제 5-2 다음프로그램에서잘못된부분을찾아서그이유를설명하고, 올바르게수정하라 // 이프로그램은에러를포함한다. #include <cstdlib> class myclass int *p; myclass(int i); ~myclass() delete p; int getval(myclass o); ; int myclass::getval(myclass o) return *o.p; // 값을얻는다. myclass a(1), b(2); myclass::myclass(int i) p = new int; if (!p) cout << "Allocation error n"; exit(1); *p = i; cout << a.getval(a) << " " << a.getval(b) << endl; cout << b.getval(a) << " " << b.getval(b) << endl; 23/50 연습문제 5-3 연습문제 5-2 에서함수매개변수로객체가아닌객체레퍼런스로전달할경우복사생성자함수가호출되는가? 그리고함수에객체레퍼런스로전달된그함수가종료될때그객체의소멸자함수는호출되는가? 직접실행해보고메모리구조를이용하여실행결과에대하여자세하게설명하라 int myclass::getval(myclass &o) return *o.p; // 값을얻는다 /50 12
13 5.2 객체포인터와객체배열 클래스의객체도객체포인터를선언하고포인터를통해해당객체의멤버를액세스가능 -> 연산자사용 class myclass int a; myclass(int x); // 생성자 int get (); ; myclass::myclass(int x) a = x; int myclass::get() return a; myclass ob(120); // 객체를생성한다. myclass *p; // 객체포인터를생성한다. p = &ob; // ob 의주소를 p 에저장한다. cout << "Value using object: " << ob.get(); cout << " n"; cout << "Value using pointer: " << p->get(); 25/ 객체포인터와객체배열 객체포인터의의미 26/50 13
14 [2] 동적할당객체 1: 2: 3: 4: class Date 5: 6: int Year, Month, Day; 7: 8: Date(int yy=1, int mm=1, int dd=1); 9: void SetDate(int yy, int mn, int dd); 10: void Display(); 11: ; 12: 13: Date::Date(int yy, int mm, int dd) 14: 15: Year = yy; 16: Month = mm; 17: Day = dd; 18: 19: 20: 21: void Date::SetDate(int yy, int mm, int dd) 22: 23: Year = yy; 24: Month = mm; 25: Day = dd; 26: 28: void Date::Display() 29: 30: cout << Year << '.' << Month << '.' << Day << endl; 31: 32: 33: void main() 34: 35: // 객체포인터와동적할당객체선언 36: Date *Today = new Date(2005, 9, 22); 37: Date *Tomorrow = new Date(2005, 9, 23); 38: 39: Today->Display(); 40: Tomorrow->Display(); 41: 42: delete Today; 43: delete Tomorrow; 44: 실행결과 동적할당객체는프로그램의실행도중만들어지며힙영역에저장 동적할당객체를사용하면실행프로그램의크기를줄일수있다. 27/50 [3] 객체배열 /* PointArr1.cpp */ #include<iostream> class Point int x; int y; Point() cout<<"void 생성자호출!"<<endl; x=y=0; Point(int _x, int _y) x=_x; y=_y; int GetX() return x; int GetY() return y; void SetX(int _x) x=_x; void SetY(int _y) y=_y; ; Point arr[3]; for(int i=0; i<3; i++) arr[i].setx(i*2); arr[i].sety(i*3); for(int j=0; j<3; j++) cout<<"x: "<<arr[j].getx()<<' '; cout<<"y: "<<arr[j].gety()<<endl; 실행결과는다음과같다. void 생성자호출! void 생성자호출! void 생성자호출! x: 0 y: 0 x: 2 y: 3 x: 4 y: 6 28/50 14
15 [3] 객체배열 객체배열은배열안에객체가존재한다. 객체배열생성과정에서도생성자의호출을요구한다. 객체배열 29/50 [3] 객체배열 배열초기화 class Date int Year, Month, Day; Date(int yy=1, int mm=1, int dd=1); void SetDate(int yy, int mn, int dd); void Display(); ; Date::Date(int yy, int mm, int dd) Year = yy; Month = mm; Day = dd; void Date::SetDate(int yy, int mm, int dd) Year = yy; Month = mm; Day = dd; void Date::Display() cout << Year << '.' << Month << '.' << Day << endl; void main() Date d[7] = 2000, Date(2001), Date(2002,2), Date(2002, 12, 25), Date(2003, 4, 18); int i; for(i=0 ;i<7; i++) cout << i << " : "; d[i].display(); cout << endl; delete [] d; 실행결과는다음과같다 : : : : : : : /50 15
16 동적객체배열 void main() Date *d = new Date[10]; // 동적객체배열의선언... d[0] Year Month Day Date *d = new Date[10]; d[1] d[2] d[9] Year Month Day Year Month Day. Year Month Day 동적객체배열 d 의메모리할당형태 31/50 2 차원객체배열 // 2 차원객체배열을생성한다. class samp int a; samp(int n) a = n; int get_a() return a: ; samp ob[4][2] = 1, 2, 3, 4, 5, 6, 7, 8 ; int i; 위프로그램의출력결과는다음과같다 for(i = 0; i < 4; i++) cout << ob[i][0].get_a() << ' '; cout << ob[i][1].get_a() << endl; cout << endl; 32/50 16
17 연습문제 5-4 Date 클래스에서다음과같은세문장의의미를설명하세요. 특히, 가와나의차이점은무엇인가? 가. Date *d = new Date[10]; 나. Date d[10]; 다. Date d(10); 33/50 연습문제 5-5 다음과같은클래스선언을사용하여, 10 개의원소를갖는배열을생성하고멤버변수 ch 를 A 부터 J 까지의값으로초기화하라. 그리고실제로배열이이값들을가지고있는지보여라 class letters char ch; letters(char c) ch = c; char get_ch() return ch; ; /50 17
18 연습문제 5-6 다음과같은클래스선언을사용하여 10개의원소를갖는배열을생성하고 num을 1부터 10까지의값으로, sqr를 num의제곱으로초기화하라 class squares int num, sqr; squres(int a, int b) num = a; sqr = b; void show() cout << num << ' ' << sqr << " n"; ; / This 포인터 this는멤버함수가호출될때멤버함수에자동으로전달되는포인터로, 호출한객체를가리키는포인터 ob.f1(); //ob는객체이다. 위문장의함수 f1( ) 은호출한객체인 ob에대한포인터를자동으로전달받는다. 이포인터가 this이다. 멤버함수에게만 this 포인터가전달된다는사실을아는것이중요하다. 36/50 18
19 5.3 This 포인터 class Person Person* GetThis() return this; //this 포인터를리턴. ; Person *p1 = new Person(); cout<<" 포인터 p1 이가리키는주소 : "<<p1<<endl; cout<<"p1 의 this 가가리키는주소 : "<<p1-> GetThis()<< endl << endl; Person *p2 = new Person(); 위의예제프로그램에대한실행결과는다음과같다 포인터 p1 이가리키는주소 : p1 의 this 가가리키는주소 : 포인터 p2 가가리키는주소 : 00481DB0 p2 의 this 가가리키는주소 : 00481DB cout<<" 포인터 p2 가가리키는주소 : "<<p2<<endl; cout<<"p2 의 this 가가리키는주소 : "<<p2-> GetThis()<<endl; 37/ This 포인터 this p1 객체멤버함수내에서 Person p1 객체 this p2 객체멤버함수내에서 Person p2 객체 [ 그림 5-11] This 포인터의의미 38/50 19
20 This 포인터의용도 실행결과는다음과같다. class Data int a; int b; public : Data(int a, int b) //a=a; this->a=a; //b=b; this->b=b; void printall() cout<< a: " << a<<" b: "<<b<<endl; ; a: 10 b: 생각해야할변수의이름이하나줄어들기때문이다. 주석처리부분을이용해서실행해보자? 어떻게되는가? int main(void) Data d(10, 20); d.printall(); 39/50 연습문제 5-7 다음프로그램의클래스멤버에대한참조를명시적으로 this 포인터를사용한참조로바꾸어라. class myclass int a, b; myclass(int n, int m) a = n; b = m; int add() return a+b; void show(); ; void myclass::show() int t; t = add(); // 멤버함수를호출한다. cout << t << " n"; myclass ob(10, 14); ob.show(); 40/50 20
21 5.4 friend 키워드 friend 함수 클래스의실제멤버함수가아닌함수를이용하여클래스의 private 멤버에접근해야할필요가있다. 이를해결하기위해서 C++ 는 friend 함수를지원 friend는클래스의멤버가아니면서도클래스의 private 원소에접근할수있다. friend 함수가유용한두가지이유는 연산자오버로딩과특정한유형의입출력함수의생성에서사용되기때문 friend 함수를사용하는또다른이유는하나의함수가두개이상의서로다른클래스들의 private 멤버에액세스하도록하는것 friend 함수는멤버함수가아닌일반함수로정의 41/ Friend 함수 // friend 함수의예 #include<iostream> class myclass int n, d; myclass(int i, int j) n = i; d = j; // myclass 의 friend 를선언한다. friend int isfactor(myclass ob); ; /* 다음은 friend 함수의정의. 이것은 d 가 n 의인수이면참을반환한다. 키워드 friend 가 isfactor() 의정의에서는사용되지않는다는점에유의하세요. */ int isfactor(myclass ob) if (!(ob.n % ob.d)) return 1; else myclass ob1(10, 2), ob2(13, 3); if (isfactor(ob1)) cout << "2 is a factor of 10 n"; else cout << "2 is not a factor of 10 n"; if (isfactor(ob2)) cout << "3 is a factor of 13 n"; else cout << "3 is not a factor of 13 n"; 42/50 21
22 Friend 함수 isfactor() 가 myclass의 friend이므로 isfactor() 는클래스의 private 부분에접근할수있다. friend 함수는 friend로사용되는클래스의멤버가아니라는것을이해하는것이매우중요 ob1.isfactor(); // 잘못된사용이다. isfactor는멤버함수가아니다. 대신 friend 함수는일반함수처럼호출 비록 friend 함수가 friend로사용되는클래스의 private 요소들에대하여알고있지만, 클래스의객체를통해서만요소들에접근할수있다. 43/50 두개의서로다른클래스형이서로비교할필요가있는공통성을지닐때 friend 함수가유용하게사용된다. car 라는클래스와 truck 이라는클래스는각각의클래스가나타내는차종의속도를나타내는 private 변수를포함하고있다. class truck; // 전방선언 (forward declaration) class car int passengers; int speed; car(int p, int s) passengers = p; speed = s; friend int sp_greater(car c, truck t); ; /* car 가 truck 보다빠르면양수를반환한다. 속도가같으면 0 을반환한다. truck 이 car 보다빠르면음수를반환한다. */ int sp_greater(car c, truck t) return c.speed - t.speed; int t; car c1(6, 55), c2(2, 120); truck t1(10000, 55), t2(20000, 72); cout << "Compare c1 and t1: n"; t = sp_greater(c1, t1); if (t < 0) cout << "Truck is faster. n"; else if(t == 0) cout << "Car and truck speed is the same. n"; else cout << "Car is faster. n"; class truck int weight; int speed; truck(int w, int s) weight = w; speed = s; friend int sp_greater(car c, truck t); ; cout << "Compare c2 and t2: n"; t = sp_greater(c2, t2); if (t < 0) cout << "Truck is faster. n"; else if(t == 0) cout << "Car and truck speed is the same. n"; else cout << "Car is faster. n"; 44/50 22
23 Friend 함수 하나의함수는둘이상의클래스의 friend가될수있다. 전방선언 (forward declaration 또는 forward reference ) 클래스선언은실제로되지않았지만클래스이름을컴파일러에게알려주는방법 45/50 하나의함수는한클래스의멤버이면서다른클래스의 friend 가될수도있다. #include<iostream> class truck; // 전방선언 class car int passengers; int speed; car(int p, int s) passengers = p; speed = s; int sp_greater(truck t); ; class truck int weight; int speed; truck(int w, int s) weight = w, speed = s; // 영역연산자 (::) 를새로사용 friend int car::sp_greater(truck t); ; /* car 가 truck 보다빠르면양수를반환한다. 속도가같으면 0 을반환한다. truck 이 car 보다빠르면음수를반환한다. */ int car::sp_greater(truck t) /* sp_greater() 는 car 의멤버이므로 truck 객체만전달되어야한다. */ return speed - t.speed; int t; car c1(6, 55), c2(2, 120); truck t1(10000, 55), t2(20000, 72); cout << "Compare c1 and t1: n"; t = c1.sp_greater(t1); // car 의멤버함수로서호출 if(t<0) cout << "Truck is faster. n"; else if (t == 0) cout << "Car and truck speed is the same. n"; else cout << "Car is faster. n"; cout << " n Compare c2 and t2: n"; t = c2.sp_greater(t2); // car 의멤버함수로서호출 if(t<0) cout << "Truck is faster. n"; else if(t==0) cout << "Car and truck speed is the same. n"; else cout << "Car is faster. n"; 46/50 23
24 클래스에대한 friend 선언 class A int data; friend class B; // class B를 friend로선언함! void ShowData() cout << data: << data << endl; ; class B void SetData(A &a, int val) a.data=val; //class A 의 private 영역접근! ; 클래스간 friend 선언의의미 A a; B b; b.setdata(a, 10); a.showdata(); 47/50 연습문제 5-8 다음과같이 pr1 과 pr2 라는두클래스가하나의프린터를공유하는상황에대해생각해보자. 또한, 프로그램의어느부분에서어떤클래스의객체가프린터를사용중인지알고자한다고하자. inuse() 라는함수를생성하여프린터가사용중이면 true 를, 그렇지않으면 false 를반환하도록하라. 이함수를 pr1 과 pr2 모두의 friend 가되도록하라 class pr1 int printing; //... pr1() printing = 0; void set_print(int status) printing = status; //... ; class pr2 int printing; //... pr2() printing = 0; void set_print(int status) printing = status; //... ; /50 24
25 실습문제 3 장의실습문제에서 C 언어로작성한 은행계좌관리프로그램 -version 1.0 을 4 장과 5 장에서배운 C++ 문법특히클래스개념을적용한 " 은행계좌관리프로그램 - version 2.0 을작성해보자. 은행계좌관리프로그램의 v1.0 에서정의한구조체 Account 를클래스 Account 로변경해보자. 단순히키워드 struct 를 class 로변경하라는뜻이아니고, OOP 개념을충실히적용하여 Account 클래스를정의해보자. v2.0 에서구현하여야하는내용을정리하면다음과같다. [1] v1.0 의 Account 구조체는배열을이용하여고객의이름을저장하는형태로구현하였는데, v2.0 의 Account 클래스에서는이를생성자내에서동적할당하는형태로구현하자. 즉, Account 클래스는멤버변수로문자열포인터 (char *) 를지니고있다. [2] v1.0 에서는구조체포인터배열을선언하고이것을이용해서고객정보를저장하였다. ( 예, struct Account parry[100]; // 100 명의고객에대한구조체배열변수 Account 선언 ) v2.0 에서는객체저장을위한포인터배열을선언해서객체를저장하자. 계좌의수는기본적으로 10 개의계좌를생성하고, 이후 10 개가넘어면 5 개씩추가하여계좌를계속해서늘려갈수있는구조로프로그램을설계하자. [3] 생성자함수와소멸자함수를반드시정의하여객체초기화와동적으로할당된메모리를소멸자함수에서해제하자. [4] 생성자와소멸자에서동적할당및소멸이이루어지므로복사생성자함수정의가필요한부분이다. 복사생성자함수를정의하자. 49/50 질문 & 답변 Thank You! 수고하셨습니다. 50/50 25
Microsoft PowerPoint - Chapter 6.ppt
6.Static 멤버와 const 멤버 클래스와 const 클래스와 static 연결리스트프로그램예 Jong Hyuk Park 클래스와 const Jong Hyuk Park C 의 const (1) const double PI=3.14; PI=3.1415; // 컴파일오류 const int val; val=20; // 컴파일오류 3 C 의 const (1)
More information1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a
6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;
More informationC++ Programming
C++ Programming 클래스와데이터추상화 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 객체지향프로그래밍 클래스와객체 2 객체지향프로그래밍 객체지향언어 (Object-Oriented Language) 프로그램을명령어의목록으로보는시각에서벗어나여러개의 독립된단위, 즉 객체 (Object) 들의모임으로파악
More informationMicrosoft PowerPoint - C++ 5 .pptx
C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성
More informationMicrosoft PowerPoint - Chapter 4-rev
4. 클래스의완성 정보은닉 ( 자료은폐 ) 과캡슐화 생성자 소멸자 클래스와배열 자기참조 (this 포인터 ) friend 선언 Jong Hyuk Park 정보은닉과캡슐화 Jong Hyuk Park 3 장의내용정리 클래스에대한기본 (7 장까지이어진다 ) 무엇인가를구현하기에는아직도무리! 클래스의등장배경 현실세계를모델링 데이터추상화 클래스화 객체화 접근제어 : public,
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현
More informationMicrosoft PowerPoint - additional06.ppt [호환 모드]
보조자료 6.Static 멤버와 const 멤버 클래스와 const 클래스와 static 연결리스트프로그램예 Jong Hyuk Park 클래스와 const Jong Hyuk Park 복습 : Const 키워드왜사용? C 의 const (1) const double PI=3.14; PI=3.1415; // 컴파일오류 const int val; val=20; //
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationMicrosoft PowerPoint - Chap12-OOP.ppt
객체지향프로그래밍 (Object Oriented Programming) 12 장강사 강대기 차례 (Agenda) 멤버에대한동적메모리할당 암시적 / 명시적복사생성자 암시적 / 명시적오버로딩대입연산자 생성자에 new 사용하기 static 클래스멤버 객체에위치지정 new 사용하기 객체를지시하는포인터 StringBad 클래스 멤버에포인터사용 str static 멤버
More informationMicrosoft PowerPoint - Chapter 10.ppt
10. 연산자오버로딩 연산자오버로딩소개 이항연산자오버로딩 단항연산자의오버로딩 cout, cin, endl 구현 배열인덱스연산자오버로딩 대입연산자오버로딩 Jong Hyuk Park 연산자오버로딩소개 Jong Hyuk Park 연산자오버로딩 (operator overloading) C++ 에서는기존의 C 언어에서제공하고있는연산자에대하여그의미를다시부여하는것을 "
More informationC++ Programming
C++ Programming 상속과다형성 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 상속의이해 상속과다형성 다중상속 2 상속과다형성 객체의이해 상속클래스의객체의생성및소멸 상속의조건 상속과다형성 다중상속 3 상속의이해 상속 (Inheritance) 클래스에구현된모든특성 ( 멤버변수와멤버함수 )
More information(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])
클래스의응용 클래스를자유자재로사용하자. 이장에서다룰내용 1 객체의치환 2 함수와클래스의상관관계 01_ 객체의치환 객체도변수와마찬가지로치환이가능하다. 기본예제 [7-1] 객체도일반변수와마찬가지로대입이가능하다. 기본예제 [7-2] 객체의치환시에는조심해야할점이있다. 복사생성자의필요성에대하여알아보자. [ 기본예제 7-1] 클래스의치환 01 #include
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationMicrosoft PowerPoint - additional08.ppt [호환 모드]
8. 상속과다형성 (polymorphism) 상속된객체와포인터 / 참조자의관계 정적바인딩과동적바인딩 virtual 소멸자 Jong Hyuk Park 상속의조건 public 상속은 is-a 관계가성립되도록하자. 일반화 ParttimeStd 구체화 2 상속의조건 잘못된상속의예 현실세계와완전히동떨어진모델이형성됨 3 상속의조건 HAS-A( 소유 ) 관계에의한상속!
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More information슬라이드 1
정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함
More information1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1
5 장클래스의활용 클래스와배열객체포인터 this 포인터멤버함수오버로딩디폴트매개변수의사용 friend ( 전역함수, 클래스, 멤버함수 ) 내포클래스지역클래스 static 멤버 const 멤버와 const 객체 explicit 생성자 C++ 프로그래밍입문 1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int
More informationPowerPoint Template
7. 상속 (inheritance) 의이해 상속의기본개념 상속의생성자, 소멸자 protected 멤버 Jong Hyuk Park 상속의기본개념 Jong Hyuk Park 상속의기본개념 상속의예 1 " 철수는아버지로부터좋은목소리와큰키를물려받았다." 상속의예 2 "Student 클래스가 Person 클래스를상속한다." 아버지 Person 철수 Stduent 3
More information1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할
15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p
More informationC++ Programming
C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More information4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문
4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문 1. 클래스와객체 추상데이터형 : 속성 (attribute) + 메서드 (method) 예 : 자동차의속성과메서드 C++ : 주로 class
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]
More informationPowerPoint Template
16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //
More information<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>
객체지향프로그램밍 (Object-Oriented Programming) 1 C++ popular C 객체지향 (object oriented) C++ C : 상위계층언어특징 + 어셈블리언어특징 C++ : 소프트웨어개발플랫폼에객체지향개념제공 객체지향 : 자료와이들자료를어떻게다룰것인지따로생각하지않고단지하나의사물로생각 형 변수가사용하는메모리크기 변수가가질수있는정보
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft PowerPoint - additional01.ppt [호환 모드]
1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능
More information쉽게 풀어쓴 C 프로그래밍
제 11 장상속 1. 상속의개념을이해한다. 2. 상속을이용하여자식클래스를작성할수있다. 3. 상속과접근지정자와의관계를이해한다. 4. 상속시생성자와소멸자가호출되는순서를이해한다. 이번장에서만들어볼프로그램 class Circle { int x, y; int radius;... class Rect { int x, y; int width, height;... 중복 상속의개요
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More information(Microsoft Word - \301\337\260\243\260\355\273\347.docx)
내장형시스템공학 (NH466) 중간고사 학번 : 이름 : 문제 배점 점수 1 20 2 20 3 20 4 20 5 10 6 10 7 15 8 20 9 15 합계 150 1. (20 점 ) 다음용어에대해서설명하시오. (1) 정보은닉 (Information Hiding) (2) 캡슐화 (Encapsulation) (3) 오버로딩 (Overloading) (4) 생성자
More information쉽게 풀어쓴 C 프로그래밍
제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More informationchap10.PDF
10 C++ Hello!! C C C++ C++ C++ 2 C++ 1980 Bell Bjarne Stroustrup C++ C C++ C, C++ C C 3 C C++ (prototype) (type checking) C C++ : C++ 4 C C++ (prototype) (type checking) [ 10-1] #include extern
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More information윤성우의 열혈 TCP/IP 소켓 프로그래밍
C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct
More informationMicrosoft PowerPoint - additional07.ppt [호환 모드]
보충자료 7. 상속 (inheritance) 의이해 상속의기본개념 상속의생성자, 소멸자 protected 멤버 Jong Hyuk Park 상속의기본개념 Jong Hyuk Park 상속의기본개념 상속의예 1 " 철수는아버지로부터좋은목소리와큰키를물려 받았다." 상속의예 2 "Student 클래스가 Person 클래스를상속한다." 아버지 Person 철수 Stduent
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More informationMicrosoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt
포인터 1 포인터란? 포인터 메모리의주소를가지고있는변수 메모리주소 100번지 101번지 102번지 103번지 int theage (4 byte) 변수의크기에따라 주로 byte 단위 주소연산자 : & 변수의주소를반환 메모리 2 #include list 8.1 int main() using namespace std; unsigned short
More information구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을
(structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined
More informationKNK_C_05_Pointers_Arrays_structures_summary_v02
Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationJAVA PROGRAMMING 실습 05. 객체의 활용
public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string
More informationMicrosoft PowerPoint - additional03.ppt [호환 모드]
3. 클래스의기본 객체지향프로그래밍소개 구조체와클래스 클래스의정의 Jong Hyuk Park 객체지향프로그래밍소개 Jong Hyuk Park 구조적프로그래밍개념 기존 C와같은구조적프로그래밍언어는동작되는자료와처리동작자체를서로별도로구분 처리동작과자료사이의관계가서로밀접한연관성을갖지못함 프로그램이커지거나복잡해지면프로그램이혼란스럽게되어에러를찾는디버깅및프로그램의유지보수가어려워짐
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
More information1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문
1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문 1. 표준입출력 표준입출력 입력 : 키보드, scanf 함수 출력 : 모니터, printf 함수문제 : 정수값 2개를입력받고두값사이의값들을더하여출력하라. #include int main(void) int Num1, Num2; int
More informationMicrosoft PowerPoint - chap11-포인터의활용.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에
More informationThe C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수
The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 5.9.1 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수정수에대한포인터, 정수에대한상수포인터. 그리고각각의객체를초기화하자. Ex 문자에대한포인터 char
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More informationMicrosoft PowerPoint - Java7.pptx
HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)
More informationMicrosoft PowerPoint - chap06-5 [호환 모드]
2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.
More information프입2-강의노트-const-friend-static
Chapter 05. const, friend, static 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2018-2 nd 프로그래밍입문 (2) Chapter 05-1. const 멤버변수, 함수, 객체 const 멤버변수 멤버변수에 const 를붙이는경우 class Car public:
More information이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
More informationC프로-3장c03逞풚
C h a p t e r 03 C++ 3 1 9 4 3 break continue 2 110 if if else if else switch 1 if if if 3 1 1 if 2 2 3 if if 1 2 111 01 #include 02 using namespace std; 03 void main( ) 04 { 05 int x; 06 07
More informationJAVA PROGRAMMING 실습 02. 표준 입출력
# 왜생겼나요..? : 절차지향언어가가진단점을보완하고다음의목적을달성하기위해..! 1. 소프트웨어생산성향상 객체지향소프트웨어를새로만드는경우이미만든개체지향소프트웨어를상속받거나객체를 가져다재사용할수있어부분수정을통해소프트웨어를다시만드는부담줄임. 2. 실세계에대한쉬운모델링 실세계의일은절차나과정보다는일과관련된많은물체들의상호작용으로묘사. 캡슐화 메소드와데이터를클래스내에선언하고구현
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More information4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열
- Part2-4 4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열 4.1 포인터와 1 차원배열 4.1 1 (1/16)- - - [4-1.c ] #include int main(void) { int array[3]={10, 20, 30}; } prind("%x %x %x
More informationq 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2
객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가
More information1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,
8 장상속 상속의기본개념상속관련문제제기 base 클래스의접근제어와 protected 멤버상속관계에서의생성자와소멸자함수재정의 (function overriding) 디폴트액세스지정자와구조체 derived 클래스로부터의상속다중상속 virtual base 클래스 derived 클래스의디폴트복사생성자와디폴트대입연산자 private 생성자의사용 C++ 프로그래밍입문
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More informationSlide 1
SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 14. 상속 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr Learning Objectives 상속의기본 파생클래스와생성자 protected: 제한자 멤버함수의재정의 상속되지않는함수들 상속을이용한프로그래밍
More informationSlide 1
SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 6. 구조체와클래스 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr Learning Objectives 구조체 구조체형 함수매개변수로서의구조체 구조체초기화 클래스 정의, 멤버함수 public 과 private
More informationPowerPoint Presentation
public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +
More informationMicrosoft PowerPoint - Chapter 1-rev
1.C 기반의 C++ part 1 스트림입출력 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 스트림입출력 Jong Hyuk Park printf 와 scanf 출력의기본형태 : 과거스타일! iostream.h 헤더파일의포함
More informationPowerPoint Presentation
Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More information<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>
쉽게풀어쓴 C 언어 Express 제 17 장동적메모리와연결리스트 이번장에서학습할내용 동적메모리할당의이해 동적메모리할당관련함수 연결리스트 동적메모리할당에대한개념을이해하고응용으로연결리스트를학습합니다. 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것
More informationPowerPoint Template
1.C 기반의 C++ 스트림입출력 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 스트림입출력 Jong Hyuk Park printf 와 scanf 출력의기본형태 iostream 헤더파일의포함 HelloWorld2.cpp
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More information(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])
입출력 C++ 의효율적인입출력방법을배워보자. 이장에서다룰내용 1 cin 과 cout 을이용한입출력 2 입출력연산자중복 3 조작자생성 4 파일입출력 01_cin 과 cout 을이용한입출력 포맷입출력 C++ 의표준입출력은 cin, cout 을사용한다. C 의 printf 는함수이므로매번여러인자를입력해줘야하지만, cin/cout 에서는형식을한번만정의하면계속사용할수있다.
More informationPowerPoint 프레젠테이션
Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐
More information윤성우의 열혈 TCP/IP 소켓 프로그래밍
Chapter 08. 상속과다형성 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2013-2 nd 프로그래밍입문 (2) Chapter 08-1. 객체포인터의참조관계 3 상속된객체와포인터관계 객체포인터 객체의주소값을저장할수있는포인터 AAA 클래스의포인터는 AAA 객체의주소뿐만아니라 AAA
More information윤성우의 열혈 TCP/IP 소켓 프로그래밍
예외처리 (Exception Handling) 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2012-2 nd 프로그래밍입문 (1) 예외상황과예외처리의이해 3 예외상황을처리하지않았을때의결과 예외상황은프로그램실행중에발생하는문제의상황을의미한다. 예외상황의예나이를입력하라고했는데, 0보다작은값이입력됨.
More informationMicrosoft Word - FunctionCall
Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack
More informationThe C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시
The C++ Programming Language 4 장타입과선언 4.11 연습문제 4.11.1 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include //#include 문, 헤더파일, 전처리지시자로호칭 using namespace std; //using 키워드를사용하여 std 네임스페이스를사용선언
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More informationPowerPoint Presentation
자바프로그래밍 1 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new
More informationPowerPoint Presentation
Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More information<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include "QuickSort.h" 7 using namespace std; 8 9 10 Node* Queue[100]; // 추가입력된데이터를저장하기위한 Queue
More information02장.배열과 클래스
---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :
More information8. 클래스 D는클래스 A, 클래스 B, 클래스 C로부터상속받아맊들고싶다. 아래빈칸을채우시오. ( 대소문자주의하시오 ) class D { ; Student s; 11. 다음프로그램의실행결과는? 9. 다음프로그램의실행결과는? class A{ A(){cout << " 생성
2009-2 C++ 프로그래밍 이름 : 주의사항을반드시읽고시작하세요. 1) 부분점수는없고, 각문항은 10점입니다. 2) 공학인증설문조사오늘이마지막날입니다. 1. 아래프로그램에서객체는몇개생성되었는가? Point(){x=0; void Print(){ cout
More information(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public
Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법
More information3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터
- Part2-3 3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터 3.1 포인터란 ü ü ü. ü. ü. ü ( ) ? 3.1 ü. ü C ( ).? ü ü PART2-4 ü ( ) PART3-4 3.2 포인터변수의선언과사용 3.2 포인터 변수의 선언과 사용 (1/8) 포인터 변수의
More informationMicrosoft PowerPoint - chap03-변수와데이터형.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.
More informationNo Slide Title
클래스와객체 이충기 명지대학교컴퓨터공학과 들어가며 Q: 축구게임에서먼저공격하는팀을정하기위해동전을던진다. 우리는동전을던질때앞면이나오느냐아니면뒷면이나오느냐에만관심이있다. 또한동전을가지고해야할일은동전을던지는것과동전을던진후결과를알면된다. 이동전을효과적으로나타낼수있는방법을기술하라. A: 2 클래스와객체 객체 (object): 우리주변의어떤대상의모델이다. - 예 : 학생,
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More information<4D F736F F F696E74202D2038C0E55FB0ADC0C7B3EBC6AE28B0A1BBF3C7D4BCF6BFCD20B4D9C7FCBCBA29>
C++ 프로그래밍 강의노트 #8: 8.1 상속의관계 8.2 상속에의한포인터와레퍼런스관계 8.3 가상함수와동적결합 8.4 순수가상함수와추상클래스 8.5 가상소멸자 8.6 다중상속 8.7 실습문제 2007. 5. 2 담당교수 : 조재수 E-mail: jaesoo27@kut.ac.kr 1 학습내용 8.1 상속의관계 8.2 파생된객체포인터와파생된객체레퍼런스 객체포인터
More informationMicrosoft PowerPoint - [2009] 02.pptx
원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include
More information제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터
More informationPowerPoint 프레젠테이션
Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2
More information