기초 C++ 프로그래밍 #1

Size: px
Start display at page:

Download "기초 C++ 프로그래밍 #1"

Transcription

1 < 컴퓨터학실험 I> 기초 C++ 프로그래밍 #1 서강대학교컴퓨터학과 Dept. of Computer Science, Sogang Univ. 1

2 C++ 프로그래밍언어 1979 년, Bjarne Stroustrup 의 C with Classes 의작업으로부터시작 C 의장점 : 범용성, 빠른속도, 높은보급률 Simula 의특성 : 최초의객체지향프로그래밍언어로서, 객체, 클래스, 상속등의요소포함 C 를 Simula 의특성을통해확장하고자함 1983 년 C++ 로개명됨 1998 년국제표준제정 (ISO/IEC 14882:1998, known as C++98) 2011 년 8 월최신국제표준개정 (ISO/IEC 14882:2011, known as C++11, or C++0x) Dept. of Computer Science, Sogang Univ. 2

3 객체지향프로그래밍 Object-Oriented Programming(OOP) OOP 는컴퓨터프로그램을디자인하기위해, 객체 (objects) 데이터필드 (data fields) 와메소드 (methods) 및이들간의상호작용으로구성되는 - 를사용하는프로그래밍패러다임이다. OOP 에서, 객체는클래스 (class) 의특정한인스턴스 (instance) 연구자들은대부분의객체지향언어에서, OOP 프로그래밍스타일을뒷받침하는근본적인특성들을다음과같이확인함 동적결합 (Dynamic Binding) 캡슐화 (Encapsulation) 서브타입다형성 (Subtype polymorphism) 상속 (Inheritance) Dept. of Computer Science, Sogang Univ. 3

4 절차적프로그래밍 vs. 객체지향프로그래밍 전통적인절차적프로그래밍 (traditional procedural programming) 알고리즘이우선, 그리고자료구조는나중에고려 객체지향프로그래밍 (object-oriented programming ) 자료구조가우선, 그후데이터를활용하는알고리즘에대해생각함 각각의객체가일련의연관된작업들의수행을전담하도록함 재사용성을최대화, 데이터의존성을축소, 디버깅시간을최소화 Dept. of Computer Science, Sogang Univ. 4

5 절차적프로그래밍 vs. 객체지향프로그래밍 메소드 데이터 객체 함수 함수 함수 메소드 메시지 메소드 전역데이터 데이터 객체 메소드 절차적프로그래밍 객체지향프로그래밍 Dept. of Computer Science, Sogang Univ. 5

6 객체지향프로그래밍의예 문제 : 테트리스게임을만들어야함 절차지향프로그래밍 테트리스의블록의집합을정의 게임데이터로점수가필요함 블록이쌓인것을표현하는 2 차원배열이필요함 테트리스블록을랜덤하게생성하는함수 블록이떨어지는것을계산하는함수 블록의이동을화면에표현할함수 블록이바닥에도착했는지를판단하는함수 특정라인이블록으로가득찼는지를판단하여지우는함수 특정라인이지워진후위의내용을한칸내리는함수 사용자의키보드입력을받아블록을움직이는함수 프로그램 = 데이터 + 함수 객체지향프로그래밍 크게블록생성기와게임엔진, UI로프로그램을분해 블록생성기의속성으로서현재블족의종류를정의 블록생성기의행위로서블록을랜덤하게생성하는함수정의 게임엔진의속성으로서점수, 블록의상태를정의 게임엔진의행위로서블록생성기에새로운블록요청, 블록의떨어짐, 바닥에도달, 라인의꽉참, 지워진칸위를내리는등의기능을정의 UI의속성으로서현재화면의픽셀정도를정의 UI의행위로서게임엔진에현재상태요청, 화면에새로그리기등의기능을정의프로그램 = 객체 + 객체 + Dept. of Computer Science, Sogang Univ.

7 클래스와객체 객체는두가지구성요소를지님 상태 (State): 객체가가지고있는속성또는특성 ; 데이터, 속성 행동 (Behavior): 객체가가지고있는행동또는할수있는반응양식 ; 메소드, 오퍼레이션 OOP 에서, 클래스는그자신의인스턴스를만들기위하여청사진 ( 또는형틀 ) 으로사용되는구조물이라할수있음 Blue Car Car Class (Abstract) Red Car Yellow Car Example: The Car Class and Car Instances Dept. of Computer Science, Sogang Univ. 7

8 클래스와객체 클래스 ( 개념 ) 인스턴스생성 객체 ( 구체화 ) John 의은행계좌잔액 : $5,257 은행계좌 Bill 의은행계좌잔액 : $1,245,069 Mary 의은행계좌잔액 : $16,833 동일한클래스로부터생성된다수의객체들 Dept. of Computer Science, Sogang Univ. 8

9 클래스의예 클래스 : 자동차 데이터 : 제조사명 모델명 제조날짜 색상 문의개수 엔진크기 etc. 메소드 : 데이터항목정의 ( 제자사명, 모델명, 제조날짜등등명세 ) 데이터항목변경 ( 색상, 엔진등등 ) 데이터항목출력 비용계산 etc. Dept. of Computer Science, Sogang Univ. 9

10 C++ 의기초 C++ 프로그래밍의기초개념을공부하고, 그내용을바탕으로유명한자료구조중하나인스택자료구조가 C++ 로어떻게구현되는지살펴본다. 학습할내용 C++ 의프로그래밍패러다임 C++ 의표준입출력 C++ 에서의동적메모리할당 C++ 의참조연산자 C++ 에서의클래스 접근지정자, 생성자, 소멸자 C++ 로구현한스택 Dept. of Computer Science, Sogang Univ. 10

11 C++ 의프로그래밍패러다임 전역함수는 main() 함수하나만필요함 모든프로그램의수행은클래스에서생성된객체들사이의메시지전달로수행됨 : 메시지의세가지구성요소는 1) 메시지가전달될객체, 2) 수행하고자하는멤버함수의이름, 3) 그멤버함수가수행되는데필요한인자 Ex) // C++ 표준헤더는확장자.h 를붙이지않는다. #include <iostream> #include <string> int main(){ // sample 클래스의인스턴스생성 sample obj; // sample 클래스선언 class sample{ // C 언어에서는함수호출을통해작업을수행함 printf(" 함수호출 \n"); ; private: int value; public: int getvalue(){ return value; ; void setvalue(int param) { value=param; ; // C++ 에서는메시지전달로작업을수행함 /* 메시지를통해객체에게메소드를호출하여줄것을요청하며, 객체가알아서스스로동작함 ( 내부적인활동을외부에서알수없음, Encapsulation) */ obj.setvalue(10); // 메시지가전달될객체 : obj // 수행하고자하는멤버함수 : setvalue() // 멤버함수가수행되는데필요한인자 : 10 Dept. of Computer Science, Sogang Univ. 11

12 C++ 에서의표준입출력 C++ 에서의표준입출력은 I/O stream 을이용하여수행됨 stream 이란데이터의연속적인흐름을의미함 표준입력은 cin 객체로수행됨 Ex) int row, col; scanf( %d %d, &row, &clo);// C cin >> row >> col; // C++ 주소를넘기지않아도 >> 가참조 (reference type) 를받도록재정의 (overloading) 되어있으므로변수에값이저장됨 표준출력은 cout 객체로수행됨 Ex) int var1, var2; printf( %d %d, var1, var2); // C cout << var1<< var2; // C++ cout.setf() 를이용하여 printf() 의에서의 formatting 은 cout.setf() 명령어를이용하여수행됨 자세한내용은 reference manual 참고 Dept. of Computer Science, Sogang Univ. 12

13 C++ 에서의동적메모리할당 C++ 에서는 new 와 delete 이용 2 차원배열동적메모리할당 int *var1; int **var1; // C++ // 메모리할당 var1 = new int; // 메모리할당 var1 = new int*[row]; delete var1; // 메모리해제 for( i = 0; i < row; i++) // C var1[i] = new int[col]; var1 = (int*)malloc(sizeof(int)); free(var1); // 메모리해제 for( i = 0; i < row; i++) 1 차원배열동적메모리할당 delete [] var1[i]; int *var1; delete [] var1; // 메모리할당 var1 = new int[size]; // 메모리해제 delete [] var1; Dept. of Computer Science, Sogang Univ. 13

14 C++ 의참조연산자 (Reference Operator) & 연산자가 C++ 에서확장됨 참조연산자는포인터와달리별도의메모리공간을차지하지않으며, 객체를지칭하는또다른이름처럼사용됨 // 포인터이용 void swap(int *a, int *b){ int tmp; tmp = *a; *a = *b; *b = tmp; // 참조연산자이용 void swap(int &a, int &b){ int tmp; tmp = a; a = b; b = tmp; swap(&a, &b); swap(a, b); 참조연산자의사용으로함수간인자전달에서포인터연산이사라짐 리턴타입도참조연산으로지정가능 Dept. of Computer Science, Sogang Univ. 14

15 C++ 에서의클래스 C++ 에서의클래스선언과구현은분리되어있다. 클래스의선언 class < 클래스이름 >{ 접근지정자 : 멤버 ( 멤버변수또는멤버함수 ) ; 클래스의구현 클래스선언의멤버함수들을구현함 #include " 클래스이름.h" 리턴타입 < 클래스이름 >::< 멤버함수이름 >( 자료형인자 1, 자료형인자 2, ){ code; 일반적으로 < 클래스명 >.h 파일에서클래스선언, < 클래스명 >.cpp 파일에서클래스구현 #include " 클래스명.h" 으로헤더를포함하여클래스사용 Dept. of Computer Science, Sogang Univ. 15

16 접근지정자, 생성자, 소멸자 접근지정자는객체의멤버를외부에서접근 ( 다른객체나 main() 함수등 ) 할때어떤내용을외부로공개할지를결정한다. 접근지정자 객체내멤버함수 상속받은클래스의객체내멤버함수 외부함수 ( 특히 main() 함수등 ) public O O O private O X X protected O O X 일반적으로멤버변수는 private 으로, 멤버함수는 public 으로지정한다. ( 지정하지않았을경우에는기본적으로 private 로설정 ) 생성자 (constructor) 클래스로부터객체가생성될때자동으로호출되는함수 일반적으로객체의초기화를수행한다. 생성자는반드시클래스의이름과같아야하며, 리턴타입을갖지않는다. 소멸자 (destructor) 클래스로부터생성된객체가소멸될때자동으로호출되는함수 일반적으로메모리의해제등에사용된다. 반드시하나만존재하며 ~< 클래스이름 >(); 의형태로선언된다. Dept. of Computer Science, Sogang Univ. 16

17 접근지정자, 생성자, 소멸자의예 #include <iostream> #include <string> using namespace std; /* cin, cout, endl 등과같은명령어들은표준라이브러리에속하는데, 이들은 std 라는 namespace 안에존재하므로명령어사용시 std 안에있는것을사용할것임을명시해주는구문이다. 이것이없으면 std::cout<<std::endl; 과같이사용 */ // student 클래스선언 class student { private: // 객체외부에서는접근불가 int id; char *name; public: // 객체외부에서는접근가능 student(int stid, char *stname); // 생성자 ~student(); // 소멸자 ; Dept. of Computer Science, Sogang Univ. 17

18 접근지정자, 생성자, 소멸자의예 // 생성자 student::student(int stid, char *stname){ id = stid; int tmp = strlen(stname); name = new char[tmp+1]; /* 메모리할당. 일반적으로생성자에서는변수초기화만처리하는것이좋다. 인스턴스가내부적으로완전한상태가아님. */ strcpy(name, stname); cout<<"student 생성 "<<endl; // 소멸자 student::~student(){ delete(name); // 메모리해제 cout<<"student 소멸 "<<endl; int main(){ student *s = new student(10," 홍길동 "); /* 인자가 int 와 char[] 인생성자로객체가생성된후포인터 s 에연결 */ delete s; // s 에할당된객체가제거되면서소멸자가자동으로호출됨. return 0; Dept. of Computer Science, Sogang Univ. 18

19 C++ 로구현한스택 (stack.h) #define MAX_SIZE 100 typedef int Item; Struct Node{ Item item; struct Node *next; // int 를스택의자료단위로지정 // 스택의각노드에들어갈데이터 // 다음노드를가리키는포인터 class Stack{ private: // 외부에서직접접근불가 Node *top; // 스택의 top을지정하는포인터 int MaxSize; // 스택의최대크기 int currentsize; // 스택의현재크기 public: // 외부에서직접접근가능 Stack(); // 디폴트생성자 ( 스택의크기가최대크기로설정됨 ) Stack(int); // 스택의최대크기를사용자가정할수있는생성자 ~Stack(); // 소멸자 bool isempty(void) const; // 스택이비었는지를판단하는멤버함수 bool isfull(void) const; // 스택이가득찼는지를판단 int stackcount(void) const; // 스택에노드가몇개있는지를판단 bool push(const Item &item); // 스택에새로운노드를삽입 bool pop(item &item); // 스택의 top에서하나의노드를가져옴. ; Dept. of Computer Science, Sogang Univ. 19

20 C++ 로구현한스택 (stack.cpp) #include "stack.h" Stack::Stack(){ currentsize=0; MaxSize=MAX_SIZE; top = NULL; 생성자에서변수초기화수행 Stack::Stack(int maxstacksize){ currentsize = 0; MaxSize=maxStackSize; top = NULL; Stack::~Stack(){ Item i; while(isempty()){ pop(i); 소멸자에서객체가소멸될때처리할작업을수행 ( 메모리에할당된아이템들을모두없애는작업을수행함 ) bool Stack::push(const Item &item){ if(isfull()) return false; Node *add = new Node; if(!add) return false; add->item = item; add->next = NULL; currentsize++; if(!top) top = add; else{ add->next = top; top = add; return true; bool Stack::pop(Item &item){ if(isempty()) return false; Node *tmp; currentsize--; item = top->item; tmp = top; top = top->next; tmp->next = NULL; delete(tmp); return true; bool Stack::isEmpty(void) const{ return currentsize==0; bool Stack::isFull(void) const{ return currentsize==maxsize; int Stack::stackCount(void) const{ return currentsize; 새로노드를할당한후에현재의 top 변수가가리키는노드를그뒤에연결하고, 새로할당한노드를 top 변수가가리키게함 top 의바로다음노드를새로운 top 으로변경하고이전 top 의노드를할당해제 Dept. of Computer Science, Sogang Univ. 20

21 C++ 의객체지향적특성 ( 다시 3 페이지의 OOP 설명으로돌아가서,) 연구자들은대부분의객체지향언어에서, OOP 프로그래밍스타일을뒷받침하는근본적인특성들을다음과같이확인함 동적결합 (Dynamic binding) 캡슐화 (Encapsulation) 서브타입다형성 (Subtype polymorphism) 상속 (Inheritance) 1 주차에서는, C++ 에서지원하는객체지향의중요한특성중하나인상속 (Inheritance) 에대해서공부하고실습을통해개념을이해함 캡슐화및서브타입다형성은다음시간에공부함 Dept. of Computer Science, Sogang Univ. 21

22 상속 상속은객체지향에서가장혁신적인발명이라고일컬어지는개념 클래스가인스턴스를생성할때, 다른클래스의속성 / 오퍼레이션을빌려와서자신이갖고있는것과합친후하나의인스턴스를생성하는것 Dept. of Computer Science, Sogang Univ. 22

23 상속 상속은 is-a 관계를구현하는경우에사용 Ex> 학생 is a 인물 class Person { ; class Student : public Person { ; class Teacher : public Person { ; 인물 : 기반클래스 (Base Class), 학생 : 파생클래스 (Derived Class) 기반클래스는파생클래스로부터독립됨 파생클래스들에대한공통기반클래스를미리만들어두면파생클래스의공통된부분에대한분석, 설계, 구현, 테스트, 디버그, 유지관리의필요성이사라짐 아무리클래스를파생시키더라도 ( 예 : 인물의파생클래스교사 ) 기반클래스에는영향이없음 Dept. of Computer Science, Sogang Univ. 23

24 상속이되었을때생성자, 소멸자호출순서 파생클래스로부터객체가생성될때는상속계층구조상의모든생성자가호출되고, 소멸될때는모든소멸자가호출됨. Ex) D class 로객체를생성한다면 A::A(); B::B(); C::C(); D::D(); 순으로호출됨. A B C D::~D(); C::~C(); B::~B(); A::~A(); 순으로호출됨. D Dept. of Computer Science, Sogang Univ. 24

25 상속이되었을때생성자, 소멸자호출 파생클래스의생성자는자동적으로기반클래스의디폴트생성자 (default constructor, 인자가없는생성자 ) 를호출한다. 인자가있는생성자를따로정의하면디폴트생성자는없어진다. 이때만약기반클래스에서디폴트생성자가없는체로파생클래스에서생성자를호출하면존재하지도않는디폴트생성자를호출하게되어에러가발생한다. 이를해결하기위해기반클래스에디폴트생성자를추가해주거나, 또는기반클래스의생성자를명시적으로호출해주어야한다. ( 아래는 CPP-1 에서의예 ) 기반클래스 Array RangeArray::RangeArray(int l, int h) : Array(h-l+1) { 파생클래스 RangeArray 기반클래스의생성자를명시적으로지정하는방법. Dept. of Computer Science, Sogang Univ. 25

26 CPP-1: RangeArray RangeArray 클래스는배열이인덱스 0 에서시작하는것이아닌, 생성자에전달된임의의범위를갖는다. EX> RangeArray A(-10, 10); // 인덱스 -10~10 을가지고, 21 개원소저장 C++ 에서제공하는다른기본자료형 (int, float, double ) 과마찬가지로, [] 연산자를사용하여배열의값을얻거나또는배열에값을저장할수있도록설계한다. [] 연산자에대한연산자다중정의가필요 배열에원소를삽입하는경우 ( 등호의왼쪽에연산자를사용, left value), 원소가저장되는메모리영역의참조 (Reference) 를반환하도록해야함 배열의값을반환하는경우 ( 등호의오른쪽에연산자를사용, right value), 내부저장소에서원소의값을찾아서반환하도록하여야함 임의의인덱스를처리하게하는것이어려우므로, 일단인덱스 0 부터시작하는 Array 클래스를완벽하게작성한후이를상속하는 RangeArray 클래스를작성함 Dept. of Computer Science, Sogang Univ. 26

27 다중정의 (Overloading) 본실습에필요한연산자다중정의를위해다중정의에대해알아보자. 다중정의는크게함수다중정의 (function overloading) 와연산자다중정의 (operator overloading) 로구분된다. 함수다중정의는함수의이름은같고, 인자의개수나자료형이다른함수들을프로그램이자동으로구분하는것이다. Ex) int func(int a, int b); int func(float a, float b); 위의함수는이름은같지만서로다른함수다. 사용자가입력하는인자의자료형에따라다른함수가호출된다. int func(int a, int b); float func(int a, int b); 위의경우는컴파일에러를유발한다. 함수다중정의는리턴자료형만다른것으로는구현불가능 연산자다중정의는 C++ 에서사용되는특정객체에적절한연산을수행하도록연산자에또다른의미를부여하는것이다. Ex) cin, cout cin>>a; 처럼 cin 객체를위해 >> 연산자를추가로구현하고있다. 이를위해서는다음과같이정의해야한다. < 리턴자료형 > < 클래스이름 >::operator < 연산자 >( 인자 1, 인자 2 ) { Dept. of Computer Science, Sogang Univ. 27

28 함수다중정의의예 #include <iostream> using namespace std; int add(int, int); double add(double, double); 두함수의이름은같지만인자의자료형이다르다. int main(void) { cout<<"result 1 : "<<add(5,10)<<endl; cout<<"result 2 : "<<add(5.2,10.3)<<endl; return 0; int add(int, int) 가호출됨 double add(double, double) 가호출됨 int add(int a, int b){ return a+b; double add(double a, double b){ return a+b; Dept. of Computer Science, Sogang Univ. 28

29 연산자다중정의의예 char string::operator[](int i) { return s[i]; string 클래스의멤버로 [] 연산자를다중정의함으로써, 객체의인스턴스명 [int형값] 의형태로사용할때 s의인덱스의값을 char형으로리턴한다. Ex> string ss("hello"); char ichar = ss[1]; // 'e' 가 ichar에저장 string& string::operator=(string& str) { strcpy(s,str); return *this; this: 멤버함수를호출한객체에대한포인터즉, 객체자기자신에대한포인터 string 클래스의멤버로 = 연산자를다중정의함으로써, 객체의인스턴스명 =string객체의레퍼런스 의형태로사용할때그값을내부데이터로복사하고객체자신의포인터를리턴한다. Ex> string ss("hello"); string ss2("bye"); ss = ss2; // "bye" 가 ss에복사됨 Dept. of Computer Science, Sogang Univ. 29

30 Array 를이용한 RangeArray 의구현 Array 를구현한후 RangeArray 는 Array 를상속하여필요한부분만코딩하고나머지는 Array 의멤버변수와멤버함수를그대로이용한다. 예를들어, RangeArray 의인스턴스를인덱스 -10~10 으로생성하였다면, 이를 Array 의멤버변수에인덱스 0~20 으로저장하고, 대신에값을저장하거나얻는경우에 RangeArray 의인스턴스를생성시입력받은인덱스값을이용하여참조하면된다. (-7 인덱스의값을얻고자할경우 Array 의변수데이터에서인덱스 7 의값을사용하도록함 ) [] 의경우연산자다중정의를사용해야한다. (29, 31 쪽참조 ) 생성자의연결구조를반드시고려해야한다. 파생클래스에서생성자를호출할경우기반클래스의생성자를호출할수있도록명시적으로지정해주어야한다. (26 쪽참조 ) 다음두슬라이드에있는선언을기초로작성한다. Dept. of Computer Science, Sogang Univ. 30

31 Array 를이용한 RangeArray 의구현 ( 샘플프로그램과출력 ) int main(){ int i,x,y; Array a(10), b(5); for (i=0; i<a.length(); i++) a[i] = i + 1; for (i=0; i<b.length(); i++) b[i] = i * 2; cout << a(10) ; a.print(); cout << b(5) ; b.print(); cout << a[-1] ; a[-1] = 7; x = a[0]; y = b[0]; cout << a[0]= << x << b[0] = << y << endl; 출력 : a(10) [ ] b(5) [ ] a[-1] Array bound error! a[0] = 1 b[0] = 0 c(-1,3) [ ] d(3,7) [ ] c[-2] Array bound error! c[-1] = -3 d[3] = 12 RangeArray c(-1,3), d(3,7); for (i=c.basevalue(); i<=c.endvalue(); i++) c[i] = i * 3; for (i=d.basevalue(); i<=d.endvalue(); i++) d[i] = i * 4; cout << c(-1,3) ; c.print(); cout << d(3,7) ; d.print(); cout << c[-2] ; c[-2] = 3; x = c[-1]; y = d[3]; cout << c[-1] = << x << d[3] = << y << endl; Dept. of Computer Science, Sogang Univ. 31

32 Array.h #ifndef ARRAY #define ARRAY class Array{ protected: int *data; int len; public: Array(int size); ~Array(); int length(); int& operator[](int i); int operator[](int i) const; ; #endif void print(); Dept. of Computer Science, Sogang Univ. 32

33 RangeArray.h #include Array.h" class RangeArray : public Array{ protected: int low; int high; public: RangeArray(int, int); ~RangeArray(); int basevalue(); int endvalue(); ; int& operator[](int); int operator[](int) const; Dept. of Computer Science, Sogang Univ. 33

34 예비보고서에추가되어야할내용 다음을명확하게설명하라. OOP 객체 클래스 인스턴스 OOP를쓰는이유 상속 Dept. of Computer Science, Sogang Univ.

C++ Programming

C++ Programming C++ Programming 클래스와데이터추상화 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 객체지향프로그래밍 클래스와객체 2 객체지향프로그래밍 객체지향언어 (Object-Oriented Language) 프로그램을명령어의목록으로보는시각에서벗어나여러개의 독립된단위, 즉 객체 (Object) 들의모임으로파악

More information

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

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

More information

PowerPoint Presentation

PowerPoint 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 information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

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

1. 객체의생성과대입 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 information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

C++ Programming

C++ Programming C++ Programming 상속과다형성 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 상속의이해 상속과다형성 다중상속 2 상속과다형성 객체의이해 상속클래스의객체의생성및소멸 상속의조건 상속과다형성 다중상속 3 상속의이해 상속 (Inheritance) 클래스에구현된모든특성 ( 멤버변수와멤버함수 )

More information

PowerPoint Template

PowerPoint 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

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

PowerPoint Presentation

PowerPoint 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 information

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

Microsoft PowerPoint - additional07.ppt [호환 모드] 보충자료 7. 상속 (inheritance) 의이해 상속의기본개념 상속의생성자, 소멸자 protected 멤버 Jong Hyuk Park 상속의기본개념 Jong Hyuk Park 상속의기본개념 상속의예 1 " 철수는아버지로부터좋은목소리와큰키를물려 받았다." 상속의예 2 "Student 클래스가 Person 클래스를상속한다." 아버지 Person 철수 Stduent

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

PowerPoint Template

PowerPoint Template 7. 상속 (inheritance) 의이해 상속의기본개념 상속의생성자, 소멸자 protected 멤버 Jong Hyuk Park 상속의기본개념 Jong Hyuk Park 상속의기본개념 상속의예 1 " 철수는아버지로부터좋은목소리와큰키를물려받았다." 상속의예 2 "Student 클래스가 Person 클래스를상속한다." 아버지 Person 철수 Stduent 3

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 11 장상속 1. 상속의개념을이해한다. 2. 상속을이용하여자식클래스를작성할수있다. 3. 상속과접근지정자와의관계를이해한다. 4. 상속시생성자와소멸자가호출되는순서를이해한다. 이번장에서만들어볼프로그램 class Circle { int x, y; int radius;... class Rect { int x, y; int width, height;... 중복 상속의개요

More information

chap10.PDF

chap10.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 information

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - Chap12-OOP.ppt 객체지향프로그래밍 (Object Oriented Programming) 12 장강사 강대기 차례 (Agenda) 멤버에대한동적메모리할당 암시적 / 명시적복사생성자 암시적 / 명시적오버로딩대입연산자 생성자에 new 사용하기 static 클래스멤버 객체에위치지정 new 사용하기 객체를지시하는포인터 StringBad 클래스 멤버에포인터사용 str static 멤버

More information

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074> 객체지향프로그램밍 (Object-Oriented Programming) 1 C++ popular C 객체지향 (object oriented) C++ C : 상위계층언어특징 + 어셈블리언어특징 C++ : 소프트웨어개발플랫폼에객체지향개념제공 객체지향 : 자료와이들자료를어떻게다룰것인지따로생각하지않고단지하나의사물로생각 형 변수가사용하는메모리크기 변수가가질수있는정보

More information

Microsoft PowerPoint - Chapter 6.ppt

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 information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 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 information

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

Microsoft PowerPoint - additional08.ppt [호환 모드] 8. 상속과다형성 (polymorphism) 상속된객체와포인터 / 참조자의관계 정적바인딩과동적바인딩 virtual 소멸자 Jong Hyuk Park 상속의조건 public 상속은 is-a 관계가성립되도록하자. 일반화 ParttimeStd 구체화 2 상속의조건 잘못된상속의예 현실세계와완전히동떨어진모델이형성됨 3 상속의조건 HAS-A( 소유 ) 관계에의한상속!

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft 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 information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

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

Microsoft 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 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

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

1. 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 information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

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

(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 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

PowerPoint Template

PowerPoint Template 9. 객체지향프로그래밍 대구가톨릭대학교 IT 공학부 소프트웨어공학연구실 목차 2 9.1 개요 9.2 객체지향프로그래밍언어 9.3 추상자료형 9.4 상속 9.5 동적바인딩 9.1 객체지향의개념 (1) 3 객체지향의등장배경 소프트웨어와하드웨어의발전불균형 소프트웨어모듈의재사용과독립성을강조 객체 (object) 란? 우리가다루는모든사물을일컫는말 예 ) 하나의점, 사각형,

More information

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

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문 4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문 1. 클래스와객체 추상데이터형 : 속성 (attribute) + 메서드 (method) 예 : 자동차의속성과메서드 C++ : 주로 class

More information

Slide 1

Slide 1 SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 14. 상속 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr Learning Objectives 상속의기본 파생클래스와생성자 protected: 제한자 멤버함수의재정의 상속되지않는함수들 상속을이용한프로그래밍

More information

Blog

Blog Objective C http://ivis.cwnu.ac.kr/tc/dongupak twitter : @dongupak 2010. 10. 9.. Blog WJApps Blog Introduction ? OS X -. - X Code IB, Performance Tool, Simulator : Objective C API : Cocoa Touch API API.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 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 information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

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

Microsoft PowerPoint - additional03.ppt [호환 모드] 3. 클래스의기본 객체지향프로그래밍소개 구조체와클래스 클래스의정의 Jong Hyuk Park 객체지향프로그래밍소개 Jong Hyuk Park 구조적프로그래밍개념 기존 C와같은구조적프로그래밍언어는동작되는자료와처리동작자체를서로별도로구분 처리동작과자료사이의관계가서로밀접한연관성을갖지못함 프로그램이커지거나복잡해지면프로그램이혼란스럽게되어에러를찾는디버깅및프로그램의유지보수가어려워짐

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

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

Microsoft 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

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 # 왜생겼나요..? : 절차지향언어가가진단점을보완하고다음의목적을달성하기위해..! 1. 소프트웨어생산성향상 객체지향소프트웨어를새로만드는경우이미만든개체지향소프트웨어를상속받거나객체를 가져다재사용할수있어부분수정을통해소프트웨어를다시만드는부담줄임. 2. 실세계에대한쉬운모델링 실세계의일은절차나과정보다는일과관련된많은물체들의상호작용으로묘사. 캡슐화 메소드와데이터를클래스내에선언하고구현

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<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

C++ Programming

C++ 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

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A 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 information

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

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

PowerPoint Presentation

PowerPoint 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 information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 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 information

Microsoft PowerPoint - Chapter 1-rev

Microsoft 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 information

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft 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

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

제 1 강 희망의 땅, 알고리즘

제 1 강 희망의 땅, 알고리즘 제 2 강 C++ 언어개요 이재규 leejaku@shinbiro.com Topics C++ 언어의역사와개요 프로그래밍언어의패러다임변화 C 의확장언어로서의 C++ 살펴보기 포인터와레퍼런스 새로운메모리할당 Function Overloading, Template 객체지향언어로서의 C++ 살펴보기 OOP 의개념과실습 2.1 C++ 의역사와개요 프로그래밍언어의역사 C++

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft 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

untitled

untitled - -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int

More information

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제11장 포인터(강의) 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

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

Microsoft 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

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

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금, 8 장상속 상속의기본개념상속관련문제제기 base 클래스의접근제어와 protected 멤버상속관계에서의생성자와소멸자함수재정의 (function overriding) 디폴트액세스지정자와구조체 derived 클래스로부터의상속다중상속 virtual base 클래스 derived 클래스의디폴트복사생성자와디폴트대입연산자 private 생성자의사용 C++ 프로그래밍입문

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft 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 information

PowerPoint Template

PowerPoint Template 1.C 기반의 C++ 스트림입출력 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 스트림입출력 Jong Hyuk Park printf 와 scanf 출력의기본형태 iostream 헤더파일의포함 HelloWorld2.cpp

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - 제11장 포인터 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

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

(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

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

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

Microsoft 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 information

Microsoft PowerPoint 장강의노트.ppt

Microsoft PowerPoint 장강의노트.ppt 클래스와객체 클래스와객체 객체 : 우리주변의어떤대상의모델 - 예 : 사람, 차, TV, 개 객체 = 상태 (state) + 행동 (behavior) - 예 : 개의상태 - 종자, 이름, 색개의행동 - 짖다, 가져오다 상태는변수로행동은메소드로나타냄 객체는클래스에의해정의된다. 클래스는객체가생성되는틀혹은청사진이다. 2 예 : 클래스와객체 질문 : 클래스와객체의다른예는?

More information

Microsoft PowerPoint - java1 [호환 모드]

Microsoft PowerPoint - java1 [호환 모드] 10 장객체 - 지향프로그래밍 I 창병모 1 10.1 객체 - 지향개념 창병모 2 객체지향 : 동기 프로그램에서실세계객체들을시뮬레이션 창병모 3 객체 (Object) 객체 상태 (state) 객체에대한데이터 행동 (behavior)- 할 ( 될 ) 수있는연산혹은동작 예 : 은행계좌 계좌번호 현재잔액 입금 출금 창병모 4 객체와클래스 객체 Object= 데이터

More information

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

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

Microsoft 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

프입2-강의노트-C++배경

프입2-강의노트-C++배경 Chapter 00. C++ 배경 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2019-2 nd 프로그래밍입문 (2) 2 프로그래밍과프로그래밍언어 2 프로그래밍언어 기계어 (machine language) 0, 1 의이진수로구성된언어 컴퓨터의 CPU 는본질적으로기계어만처리가능 어셈블리어

More information

080629_CFP °ø°³¿ë.hwp

080629_CFP °ø°³¿ë.hwp int deleteq(int *front, rear) int item; if ( ( 가 ) ) retuen queue_empty; ( ( 나 ) ) ; return queue[*front]; 주어진문제의해에접근한결과, 즉근사해를출력하거나혹은일정확률이상의정확한해를구할수있는알고리즘으로, 이알고리즘은주어진문제에대한근사해로만족할수있거나, 간혹틀린해를출력하는경우를허용할수있는경우활용할수있다.

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

C++ Programming

C++ Programming C++ Programming C 언어에서 C++ 언어로의전환 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 C++ 언어개요 C 언어기반의 C++ 2 C++ 언어개요 C++ 언어개요 C++ 언어의역사및특징 통합개발환경 C 언어기반의 C++ 3 C++ 언어의역사 C++ 언어의역사및특징 1979 년,

More information

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf(int, dou 2 장더나은 C 로서의 C++ (1) 표준입출력네임스페이스 ( 고전 C++ 와표준 C++) 함수오버로딩디폴트매개변수 new와 delete bool 자료형 C++ is not C C++ 프로그래밍입문 1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

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

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

More information

Microsoft PowerPoint - 02-Class Review.pptx

Microsoft PowerPoint - 02-Class Review.pptx Digital 3D Anthropometry 2. Review Sungmin Kim SEOUL NATIONAL UNIVERSITY 기존프로그래밍기법의문제점 낮은코드가독성 Introduction 사용자인터페이스와데이터가혼재 사용자인터페이스를만드는코드와데이터정의가같이됨 다른운영체제나프레임워크를쓰는시스템에적용할수없음 코드의중복및복잡함 동일한코드가계속반복됨 구조체변수에동적으로메모리를할당하기어렵다

More information

Microsoft PowerPoint - Chapter 10.ppt

Microsoft PowerPoint - Chapter 10.ppt 10. 연산자오버로딩 연산자오버로딩소개 이항연산자오버로딩 단항연산자의오버로딩 cout, cin, endl 구현 배열인덱스연산자오버로딩 대입연산자오버로딩 Jong Hyuk Park 연산자오버로딩소개 Jong Hyuk Park 연산자오버로딩 (operator overloading) C++ 에서는기존의 C 언어에서제공하고있는연산자에대하여그의미를다시부여하는것을 "

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft 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

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 손시운 ssw5176@kangwon.ac.kr 실제세계는객체로이루어진다. 2 객체와메시지 3 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 4 객체 5 객체란? 객체 (Object) 는상태와동작을가지고있다. 객체의상태 (state) 는객체의특징값 ( 속성 ) 이다. 객체의동작 (behavior) 또는행동은객체가취할수있는동작

More information

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

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

윤성우의 열혈 TCP/IP 소켓 프로그래밍 상속의이해 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 프로그래밍입문 3 상속의기본개념 상속의예1 " 철수는아버지로부터좋은목소리와큰키를물려받았다." 상속의예2 "Student 클래스가 Person 클래스를상속한다." 아버지 Person 철수 Stduent 4 파생클래스 (derived

More information

C프로-3장c03逞풚

C프로-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 information

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770> 저 자 약 력이상정순천향대학교컴퓨터학부교수, sjlee@sch.ac.kr 조영일수원대학교컴퓨터학과교수, yicho@suwon.ac.kr 김은성순천향대학교전기전자공학과교수, eskim@sch.ac.kr 박종득공주대학교컴퓨터공학부교수, pjd@kongju.ac.kr C++ 언어는 C 에 C 언어의증가연산자 ++ 를덧붙인 C++ 라는이름이의미하는바와같이 C 언어의문법을대부분그대로사용하면서객체지향프로그래밍기법을추가한

More information

Microsoft PowerPoint - 6주차.pptx

Microsoft PowerPoint - 6주차.pptx 1 6 주차 클래스상속 유전적상속과객체지향상속 2 그래요우리를꼭닮았어요 아빠의유산이다. 나를꼭닮았군 유산상속 유전적상속 : 객체지향상속 생물 동물 식물 상속받음 어류사람나무풀 유전적상속과관계된생물분류 C++ 에서의상속 (Inheritance) 3 C++ 에서의상속이란? 클래스사이에서상속관계정의 객체사이에는상속관계없음 기본클래스의속성과기능을파생클래스에물려주는것

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

구조체정의 자료형 (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 information

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

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 5 장클래스의활용 클래스와배열객체포인터 this 포인터멤버함수오버로딩디폴트매개변수의사용 friend ( 전역함수, 클래스, 멤버함수 ) 내포클래스지역클래스 static 멤버 const 멤버와 const 객체 explicit 생성자 C++ 프로그래밍입문 1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information