C++ Programming: Sample Programs 2018, Spring Pusan National University Ki-Joune Li http://lik.pnu.kr
#include <stdio.h> typedef struct {float x; float y;} Point; int main(){ Point A={1.0, 2.0}; Point B={2.0, 3.0}; Point C; C=A+B; printf(… C); } #include <stdio.h> typedef struct {float x; float y;} Point; typedef struct {int n; float *values;} Vector; int main(){ Vector A, B, C; A.values=(float *)malloc(sizeof(float)*n); B.values=(float *)malloc(sizeof(float)*n); C=A+B; printf(… C); }
Point::Point() { cout << “I love him\n”; } #include <iostream> using namespace std; class Point { private: float x; float y; public: Point(); Point(const Point &); Point operator+(Point B); friend ostream& operator<<(ostream&, const Point&); }; int main(){ Point A(1.0,2.0), B(3.0,4.0), C; C=A+B; cout<< C; } Point::Point(const Point & rhs) { temp.x = rhs.x; temp.y = rhs.y; cout << “I hate him\n”; } Point Point::operator+(Point op) { Point temp; temp.x = x + op2.x; temp.y = y + op2.y; return temp; } ostream& operator<<(ostream& os, const Point& p) { os << "(" << p.x << ","<< p,y<<")\n"; return os; }
#include <iostream> using namespace std; class Vector { . . . }; int main(){ Vector A(5,2.0), B(5, 1.1); Vector C(5,0.0); C=A+B; cout<< C; }
C-language != C++ Language Syntax는 동일하지만, Semantics는 전혀 다른 언어 같아 보여도 같지 않을 수 있다는 것에 매우 주의 필요 객체지향형(Object-Oriented) 언어 1983년, 1985년 B. Stroustrup 에 의하여 만들어지고 1998년 C++ Standard가 제정됨
프로그램의 복잡도 프로그램의 크기
프로그램을 하는데 왜 느닷없이 “추상화”라는 개념이??
건축의 단계 컴퓨터 시스템 개발의 단계 무엇을 지을 것인가? 특별한 고려사항? 설계 시공 준공검사 유지보수 개략적 설계 상세설계 건물재료에 대한 설계 건축 방법에 대한 설계 유지 방법에 대한 설계 시공 준공검사 유지보수 무엇을 개발할 것인가? 특별한 고려사항? 설계 개략적 설계 상세설계 정보에 대한 설계 개발 방법에 대한 설계 유지 방법에 대한 설계 코딩(프로그래밍) 검사 유지보수
어떻게 하면 소프트웨어의 복잡도를 줄일 수 있을까?
객체지향 (Object-Oriented) 방법론 추상화 Encapsulation 예. 콘택 600 예. ??
Versus Module A-2 Module A-1 Module A-3 Module 3 Module 2 Module 1 Encapsulation Module 1 Module 3 Module 2
C++ 의 어떤 기능이 추상화를 도와주는가? Inheritance: Super Class, Subclass Operator Overloading Polymorphism Template Etc.