쉽게 풀어쓴 C 프로그래밍

Similar documents
쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Microsoft PowerPoint - C++ 5 .pptx

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - additional01.ppt [호환 모드]

PowerPoint Template

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - Chapter 6.ppt

gnu-lee-oop-kor-lec06-3-chap7

C++ Programming

슬라이드 1

C++ Programming

Microsoft PowerPoint - [2009] 02.pptx

쉽게 풀어쓴 C 프로그래밍

설계란 무엇인가?

설계란 무엇인가?

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

Microsoft PowerPoint - additional08.ppt [호환 모드]

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

C프로-3장c03逞풚

PowerPoint Presentation

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

C++ Programming

PowerPoint Template

Microsoft PowerPoint - additional06.ppt [호환 모드]

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

PowerPoint Presentation

Microsoft PowerPoint - 05장(함수) [호환 모드]

PowerPoint Presentation

Microsoft PowerPoint - additional07.ppt [호환 모드]

C++ Programming

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

Blog

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Programming hwp

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

자바 프로그래밍

PowerPoint Presentation

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Microsoft PowerPoint - Chapter 1-rev

쉽게 풀어쓴 C 프로그래밊

1. 기본형의형변환복습 C/C++ 형변환의종류 자동형변환 ( 묵시적형변환 ) 강제형변환 ( 명시적형변환 ) 기본형의자동형변환의예 1. 배열 to 포인터변환 배열명은해당배열의첫번째원소의 주소로변환됨 int ary[10]; int *pary = ary; 2. 함수 to 포

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint Template

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

쉽게 풀어쓴 C 프로그래밍

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Chapter 6 Objects and Classes

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

설계란 무엇인가?

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

080629_CFP °ø°³¿ë.hwp

Microsoft PowerPoint - additional03.ppt [호환 모드]

금오공대 컴퓨터공학전공 강의자료

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

설계란 무엇인가?

JAVA PROGRAMMING 실습 08.다형성

Microsoft PowerPoint - 6주차.pptx

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx

8. 클래스 D는클래스 A, 클래스 B, 클래스 C로부터상속받아맊들고싶다. 아래빈칸을채우시오. ( 대소문자주의하시오 ) class D { ; Student s; 11. 다음프로그램의실행결과는? 9. 다음프로그램의실행결과는? class A{ A(){cout << " 생성

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

5장.key

PowerPoint Presentation

Microsoft PowerPoint - 9ÀÏ°_ÂüÁ¶ÀÚ.ppt

Microsoft PowerPoint - Chapter 10.ppt

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - 2강

PowerPoint Presentation

17장 클래스와 메소드

윤성우의 열혈 TCP/IP 소켓 프로그래밍

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

11장 포인터

PowerPoint Presentation

Microsoft PowerPoint - CSharp-10-예외처리

설계란 무엇인가?

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Slide 1

untitled

05-class.key

JAVA PROGRAMMING 실습 02. 표준 입출력

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint 장강의노트.ppt

프입2-강의노트-C++기초

鍮뚮┰硫붾돱??李⑤낯

Design Issues

chap10.PDF

Microsoft PowerPoint - Chapter 4-rev

Transcription:

제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다.

이번장에서만들어볼프로그램

생성자 생성자 (constructor) 는초기화를담당하는함수

생성자가필요한이유 #include <iostream> using namespace std; class Time { public: int hour; // 시를나타낸다. 0-23 가가능하다. int minute; // 분을나타낸다. 0-59 가가능하다. ; void print() { cout << hour << ":" << minute << endl; Time a; // 객체 a 를생성한다. a.hour = 26; a.minute = 70;

생성자의예 class Time { public: int hour; // 0-23 int minute; // 0-59 ; Time(int h, int m) { hour = h; minute = m; void print() { cout << hour << ":" << minute << endl;

생성자를호출하는방법 Time a; // 1 오류이다! 초기화값이없다! Time b(10, 25); // 2 OK 하지만예전의방법이다. Time c { 10, 25 ; // 3 OK 최신의방법이다. Time d = { 10, 25 ; // 4 OK 하지만간결하지않다.

생성자의중복정의 #include <iostream> using namespace std; class Time { public: int hour; // 0-23 int minute; // 0-59 ; Time() { hour = 0; minute = 0; Time(int h, int m) { hour = h; minute = m; void print() { cout << hour << ":" << minute << endl;

디폴트생성자 #include <iostream> using namespace std; class Time { public: int hour; // 0-23 int minute; // 0-59 ; Time(int h=0, int m=0) { hour = h; minute = m; void print() { cout << hour << ":" << minute << endl;

디폴트생성자 int main() { Time a; Time b{ 10, 25 ; // OK // OK a.print(); b.print(); return 0;

멤버초기화리스트 Time(int h, int m) : hour{h, minute{m { Time(int h, int m) : hour(h), minute(m) { Time(int h=0, int m=0) : hour{h, minute{m {

소멸자

소멸자 #include <string.h> class MyString { private: char *s; int size; public: MyString(char *c) { size = strlen(c)+1; s = new char[size]; strcpy(s, c); ~MyString() { delete[] s; ; int main() { MyString str("abcdefghijk");

Lab: Rect 클래스 사각형을나타내는 Rectangle 클래스에생성자를추가해보자.

solution #include <iostream> using namespace std; class Rectangle { int width, height; public: Rectangle(int w, int h); int calcarea(); ; Rectangle::Rectangle(int w, int h) { width = w; height = h; int Rectangle::calcArea() { return width*height;

solution int main() { Rectangle r{ 3, 4 ; cout << " 사각형의넓이 : " << r.calcarea() << '\n'; return 0;

Lab: Circle 클래스 원을나타내는 Circle 클래스를작성하여보았다. 원은중심점과반지름과색상으로표현된다. 약 10 개의 Circle 객체를생성하면서랜덤한위치와랜덤한반지름으로화면에원을그려보자. 원의중심점과반지름은생성자를호출하여설정하라

Circle::Circle(int xval, int yval, int r, string c) { x = xval; y = yval; radius = r; color = c; solution #include <windows.h> #include <iostream> using namespace std; class Circle { int x, y, radius; string color; public: Circle(int xval = 0, int yval = 0, int r = 0, string c = ""); double calcarea(){ return radius*radius*3.14; void draw(); ;

예제 class Time { private: // 이후에선언되는멤버는모두전용멤버가된다. int hour; // 0-23 int minute; // 0-59 public: Time(int h, int m); void inc_hour(); void print(); ; Time::Time(int h, int m) { hour = h; minute = m; void Time::inc_hour() { ++hour; if (hour > 23) hour = 0;

예제 Time a { 24, 59 ; ++a.hour; // 이제는오류가발생한다!!

접근제어

접근자와설정자

예제 #include <iostream> using namespace std; class Time { public: Time(int h, int m); void inc_hour(); void print(); int gethour() { return hour; int getminute() { return minute; void sethour(int h) { hour = h; void setminute(int m) { minute = m; private: ; int hour; // 0-23 int minute; // 0-59

예제 int main() { Time a{ 0, 0 ; a.sethour(6); a.setminute(30); a.print(); return 0;

Lab: 원들의경주 지금까지학습한내용을바탕으로 원들의경주 게임을다시작성하여보자. 두개의원을생성한후에난수를발생하여원들을움직인다.

Solution #include <iostream> #include <windows.h> using namespace std; class Circle { public: Circle(int xval, int yval, int r); void draw(); void move(); private: int x, y, radius; ; Circle::Circle(int xval, int yval, int r) : x{ xval, y{ yval, radius{ r {

void Circle::draw() { Solution HDC hdc = GetWindowDC(GetForegroundWindow()); Ellipse(hdc, x - radius, y - radius, x + radius, y + radius); void Circle::move() { x += rand() % 50; int main() { Circle c1{ 100, 100, 50 ; Circle c2{ 100, 200, 40 ; for (int i = 0; i < 20; i++) { c1.move(); c1.draw(); c2.move(); c2.draw(); Sleep(1000); return 0;

객체와함수 객체가함수의매개변수로전달되는경우 객체의참조자가함수의매개변수로전달되는경우 함수가객체를반환하는경우

객체가함수의매개변수로전달되 는경우 값을전달한다. 어떤피자체인점에서미디엄크기의피자를주문하면무조건라지피자로변경해준다고하자. 다음과같이프로그램을작성하면피자의크기가커질까?

#include <iostream> using namespace std; class Pizza { public: Pizza(int s) : size(s) { int size; ; // 단위 : 인치 void makedouble(pizza p){ p.size *= 2; int main(){ Pizza pizza(10); makedouble(pizza); cout << pizza.size << " 인치피자 " << endl; return 0;

실행결과

객체의참조자가함수의매개변수 #include 로전달되는 <iostream> 경우 using namespace std; class Pizza { public: Pizza(int s) : size(s) { int size; ; // 단위 : 인치 void makedouble(pizza& p) { p.size *= 2; int main() { Pizza pizza(10); makedouble(pizza); cout << pizza.size << " 인치피자 " << endl; return 0;

실행결과

함수가객체를반환하는경우 함수가객체를반환할때도객체의내용이복사될뿐원본이전달되지않는다.

예제 #include <iostream> using namespace std; class Pizza { public: Pizza(int s) : size(s) { int size; ; // 단위 : 인치 Pizza createpizza() { Pizza p(10); return p; int main() { Pizza pizza = createpizza(); cout << pizza.size << " 인치피자 " << endl; return 0;

실행결과

Q & A