Microsoft PowerPoint - 02-Class Review.pptx

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

Microsoft PowerPoint - C++ 5 .pptx

chap10.PDF

C++ Programming

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

Slide 1

KNK_C_05_Pointers_Arrays_structures_summary_v02

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 07-Data Manipulation.pptx

Microsoft PowerPoint - 09-Object Oriented Programming-3.pptx

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

슬라이드 1

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

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

PowerPoint Presentation

C++ Programming

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

Microsoft PowerPoint - 06-Pointer and Memory.pptx

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

C++ Programming

Blog

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint Presentation

슬라이드 1

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

Microsoft PowerPoint - 06-Body Data Class.pptx

JAVA PROGRAMMING 실습 08.다형성

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

쉽게 풀어쓴 C 프로그래밍

17장 클래스와 메소드

설계란 무엇인가?

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

PowerPoint Template

02장.배열과 클래스

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

K&R2 Reference Manual 번역본

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

PowerPoint Template

PowerPoint Template

Slide 1

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - Chapter 6.ppt

PowerPoint 프레젠테이션

PowerPoint Presentation

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

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

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

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

Slide 1

C++ 기본문법 정리

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

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

C# Programming Guide - Types

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

강의계획서 1. 강의개요 학습과목명 객체지향프로그래밍 Ⅰ 학점 3 학점교 강사명교 강사전화번호 강의시간 4시간강의실수강대상 2. 교과목학습목표 4차산업혁명시대의도래로컴퓨터와프로그래밍에대한관심이커지고있으며, 여러분야에서소프트웨어의중요성을강조하며, 새시대를이끌

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

11장 포인터

01-OOPConcepts(2).PDF

Microsoft PowerPoint - chap06-2pointer.ppt

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

Microsoft PowerPoint - Chapter 10.ppt

Microsoft PowerPoint - chap12-고급기능.pptx

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

Microsoft PowerPoint - lecture2.ppt

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

PowerPoint Presentation

Microsoft PowerPoint 장강의노트.ppt

PowerPoint Presentation

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

PowerPoint Presentation

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

PowerPoint 프레젠테이션

Microsoft PowerPoint - CSharp-10-예외처리

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

제 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

슬라이드 1

Microsoft PowerPoint - Java7.pptx

Chapter #01 Subject

chap x: G입력

Slide 1

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

Design Issues

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

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

11장 포인터

Microsoft PowerPoint - 2강

어댑터뷰

유니티 변수-함수.key

Microsoft PowerPoint - 03-Points.pptx

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

PowerPoint 프레젠테이션

<4D F736F F F696E74202D2031C1D6C2F72D31C2F7BDC32028B0ADC0C7C0DAB7E D20C7C1B7CEB1D7B7A1B9D6BEF0BEEE20B0FAB8F1BCD2B

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

JAVA PROGRAMMING 실습 02. 표준 입출력

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

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Transcription:

Digital 3D Anthropometry 2. Review Sungmin Kim SEOUL NATIONAL UNIVERSITY 기존프로그래밍기법의문제점 낮은코드가독성 Introduction 사용자인터페이스와데이터가혼재 사용자인터페이스를만드는코드와데이터정의가같이됨 다른운영체제나프레임워크를쓰는시스템에적용할수없음 코드의중복및복잡함 동일한코드가계속반복됨 구조체변수에동적으로메모리를할당하기어렵다 디버깅의어려움 데이터가체계적이지않아서오류가발생했을때찾기가어렵다 낮은코드재사용성 유사한기능의다른프로그램을만들때코드를재사용할수없다 표준 C 라이브러리와의비교 표준 C 함수처럼어떤프로그램에서도사용이가능한형태의코딩이필요함 2

Struct 의한계 데이터끼리연산이필요한경우함수를만들어야함 Introduction 데이터의종류와데이터를조작하는함수가많아질수록코드의양이증가 다른프로그램에서 struct 를쓰려면관련된코드를전부가지고다녀야함 struct Person AnsiString float Race,Gender,Age; Name; Height,Weight; 3 의등장 데이터를조작하는데필요한함수들까지전부포함하는 Struct의확장판 Property ( 멤버변수 ), Method ( 멤버함수 ) 로구성 내부의복잡한계산을추상화 (Encapsulation) 내부구조를몰라도사용이가능하며독자적유지보수가가능해짐 Introduction Object Property color, size, shape, speed, fuel Method refuel(), getfuel(), setspeed(), getspeed(), drive() - Car 4

를활용한객체지향프로그래밍 주요알고리즘이외의요소는기존라이브러리 (library) 를활용 CAD 프로그램개발에필요한기하학적요소처리클래스 이미지프로세싱개발에필요한대용량이미지핸들링클래스 수치해석시스템개발에필요한미적분해석엔진클래스 하드웨어컨트롤시스템개발에필요한 I/O 컨트롤클래스 Introduction 5 Struct 와 의비교 Struct 를 로바꾸는방법 struct ptpo float x, y; class ptpo ptpo(); ptpo(ptpo&); ~ptpo(); float x, y struct 키워드를 class 로바꾼다 이라는 access specifier 를추가한다 ptpo(), ptpo(ptpo&) 와 ~ptpo() 라는 special member function 들을추가한다 하나의클래스는하나의 unit (cpp 파일 ) 으로저장한다 클래스정의는 ptpo.h 헤더파일로 ( 이클래스를사용하려고할때 include 해주어야함 ) 클래스구현에필요한소스는 ptpo.cpp 파일로 6

Constructor & Destructor Constructor 정의를써서 object 를만들때처음으로실행되는함수 멤버변수들의초기값을결정할수있다 Struct 를만들때는일일이값을초기화해주어야한다 멤버변수가많은경우프로그래머가일일이지정해주지않아도된다 Copy Constructor 이미존재하는 object 를복사해서새로운 object 를만들때사용되는함수 Destructor 심층복사 (deep level copy) 를간단하게수행할수있음 ptpo a,b 가있을때 a=b 와같은조작이가능 생성된 object 를없앨때실행되는함수 동적메모리로할당된멤버변수들을해제» delete, free 함수등 기타 object 가없어질때해야하는많은 procedure 를프로그래머가지정하지않아도수행하게됨 7 Constructor & Destructor ptpo.h //---------------------------------------------------------- #ifndef ptpoh #define ptpoh //---------------------------------------------------------- class ptpo public : #endif ptpo(); ptpo(ptpo&); ~ptpo(); // constructor // copy constructor // destructor float x,y; // member variable ptpo.cpp //--------------------------------------------------------------- #pragma hdrstop #include "ptpo.h" //--------------------------------------------------------------- #pragma package(smart_init) ptpo::ptpo() x=y=0; // initialization ptpo::ptpo(ptpo &p) x=p.x; // copy y=p.y; ptpo::~ptpo() 8

Constructor & Destructor 객체를만드는방법 ptpo *P1=new ptpo; ptpo *P2=new ptpo(p1); // 생성자가호출됨 // 복제생성자가호출됨 ptpo *P3=new ptpo[100]; // 생성자가호출됨 (100% 바람직하지는않은방법 ) 객체를없애는방법 delete P1; delete []P3; // 파괴자가호출됨 // 파괴자가호출됨 객체배열을만들고하고없애는바람직한방법 ptpo **P=new ptpo*[100] for (i=0;i<100;i++) P[i]=new ptpo; for(i=0;i<100;i++) delete P[i]; delete []P; 9 Constructor & Destructor 동적으로객체의배열을만드는방법 ptpo **P; P=(ptPo**)calloc(100,sizeof(ptPo*)); // 처음으로배열을만들때 P=(ptPo**)realloc(P,sizeof(ptPo*)*100); // 배열의크기를바꿀때 for(i=0;i<100;i++) P[i]=new ptpo; 10

Member Variable 클래스의모든멤버함수가자유롭게 Access 가능 외부로부터의 Access 는 Access Specifier 에따라제한됨 Public 외부 process 에서자유롭게접근이가능 코드작성은쉽지만외부에서접근이쉬워오류가능성이높아짐 Private 내부변수는내부함수에서만접근이가능하게제한 변수 / 함수가외부와격리 (isolation) 되어안정성이높아지며수정이용이해짐 Protected 외부에서는접근이불가능하지만상속된클래스에서는참조가능 void private: AddIntParam(); GetIntParamNum() return iparamnum; GetIntParam(); iparamnum; *iparam; 11 Member Function 클래스의멤버함수를이용한계산을수행 계산에필요한코드가클래스에포함되므로재사용이용이해짐 비슷한작동을하는함수들의추상화에의한직관적프로그래밍이가능해짐 struct ptpo float x,y;... ptpo a,b; a.x=10; a.y=10; b.x=20; b.y=30; float c=getdistance(a,b);... Struct 를이용하는방법 float GetDistance(ptPo a,ptpo b) return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); class ptpo ptpo(); float x,y; float Distance(ptPo); float ptpo::distance(ptpo a) return sqrt((x-a.x)*(x-a.x)+(y-a.y)*(y-a.y));... float c=a.distance(b); 를이용하는방법 12

Polymorphism ( 다형성, 多形性 ) 동일한이름의함수를여러개만들수있음 파라미터를이용해서구분가능 다양한옵션을가지는함수를같은이름으로관리하므로기억하기쉬움 class ptpo ptpo(); ptpo(float,float); ptpo(ptpo&); ~ptpo(); float x,y; float Distance(ptPo); float Distance(float,float); ptpo::ptpo(float X,float Y) x=x; y=y; float ptpo::distance(float X,float Y) return sqrt((x-x)*(x-x)+(y-y)*(y-y)); 13 Operator Overloading 필요성, float 과같은기본형변수의경우사칙연산등을직관적으로할수있다 수학적인요소를 class 화한경우에도이런연산을할수없을까? ptpo 의경우 ptpo class a,b,c 를정의했을때 c.add(a,b), c.subtract(a,b) 라는함수를만드는것보다 c=a+b, c=a-b 와같이쓸수있다면? ptpo class a,b 와 float d 를정의했을때 d=a.innerproduct(b) 라는함수를만드는것보다 d=a*b 라고쓸수있다면? 14

Operator Overloading +, - 연산과내적계산 class ptpo ptpo(); ~ptpo(); ptpo(ptpo&); ptpo ptpo float operator+(const ptpo& N); operator-(const ptpo& N); operator*(const ptpo& N); ptpo ptpo::operator+(const ptpo& N) return ptpo (x+n.x,y+n.y); ptpo ptpo::operator-(const ptpo& N) return ptpo (x-n.x,y-n.y); float ptpo::operator*(const ptpo& N) return x*n.x+y*n.y; 응용분야 행렬, 복소수등여러 data class 에적용가능 15 Inheritance 기존에존재하는 의모든기능을상속받은새로운클래스의작성 Parent class 에는기본적인기능만을정의 기본기능에새로운기능을계속추가할수있음 TShape TCaption TEdit TComboBox TButton 16

Design TPo2D 평면상에서점의좌표를정의하고점과관련된연산을수행 TPo3D 공간상에서점의좌표를정의하고점과관련된연산을수행 TNewFileStream 바이너리데이터의입출력을수행 TNewCanvas 2D 그래픽용좌표변환을수행 TModel3D 3 차원모델을정의하며데이터의입출력을수행 TOpenGL 3 차원물체를 2 차원화면에표시하는기능을수행 TBodyData 인체데이터의정의및렌더링을수행 TBodySection 인체의단면정보를기록하며단면내각종계측을수행 TBodyLandmark 인체의랜드마크정보를관리 17