C++ 기본문법 정리

Similar documents
C++ 기본문법 정리

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

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

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

C++ Programming

설계란 무엇인가?

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

PowerPoint Template

PowerPoint Template

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

Slide 1

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

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Blog

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

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

C++ Programming

슬라이드 1

PowerPoint Template

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 08.다형성

쉽게 풀어쓴 C 프로그래밍

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

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

Microsoft PowerPoint - C++ 5 .pptx

Slide 1

Chapter 6 Objects and Classes

Microsoft PowerPoint - 2강

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

JVM 메모리구조

PowerPoint Presentation

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

PowerPoint 프레젠테이션

슬라이드 1

PowerPoint Presentation

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

C++ Programming

17장 클래스와 메소드

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - java2 [호환 모드]

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

Design Issues

Microsoft PowerPoint - chap11

PowerPoint Presentation

제11장 프로세스와 쓰레드

Microsoft PowerPoint - chap06-2pointer.ppt

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

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

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

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

chap10.PDF

01-OOPConcepts(2).PDF

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

PowerPoint Presentation

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

윈도우시스템프로그래밍

예제 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

C++ Programming

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

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

No Slide Title

Slide 1

Microsoft PowerPoint - Chap12-OOP.ppt

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

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

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

PowerPoint Template

11장 포인터

<4D F736F F F696E74202D2031C1D6C2F72D31C2F7BDC32028B0ADC0C7C0DAB7E D20C7C1B7CEB1D7B7A1B9D6BEF0BEEE20B0FAB8F1BCD2B

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

슬라이드 1

Microsoft PowerPoint 장강의노트.ppt

Microsoft PowerPoint - Java7.pptx

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

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

Microsoft PowerPoint - Lect04.pptx

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

PowerPoint Presentation

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

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

C# Programming Guide - Types

1

제목

Slide 1

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

2002년 2학기 자료구조

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

슬라이드 1

Microsoft PowerPoint - 02-Class Review.pptx

KNK_C_05_Pointers_Arrays_structures_summary_v02

설계란 무엇인가?

JAVA PROGRAMMING 실습 07. 상속

제 1 장 기본 개념

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

Transcription:

공학 SW 집중강좌 - 프로그래밍언어 Android Programming Chap 1. 객체지향프로그래밍 오병우 컴퓨터공학과

기술동향 프로그래밍방식의변천 기계중심의 Stored-Procedure 기계어, 어셈블리언어 구조적프로그래밍 Pascal, C 잘정의된제어구조, 코드블록, GOTO 문사용억제, 순환호출 (recursion) 과지역변수를지원하는독립형 SUB 프로그램 기능별모듈화 객체지향 (Object-Oriented) 프로그래밍 Smalltalk, C++, Java, Objective-C 객체단위로모듈화 Data 와 Control 통합 복잡도감소목표 Run-time 시정보처리 (dynamic binding) 가많아구조적프로그래밍방식보다실행속도가느림 ( 현대의빠른컴퓨터로극복 ) Department of Computer Engineering 2

C vs. C++ 계산기프로그램 으로살펴보는 C 와 C++ 프로그래밍의차이 C: 기능에따라세분화 입력, 계산, 출력기능 각기능을함수로구현 C++: 객체에따라세분화 키패드, LCD, CalcController, MathEngine 각객체가가져야할특성에따라클래스로구현 main() { input(); compute(); output(); } class Keypad{ // Keypad 의특성과해야할일구현 }; class LCD { // LCD 의특성과해야할일구현 }; class CalcController { // 전체프로그램제어구현 }; class MathEngine { // +, - 등계산담당 }; Department of Computer Engineering 3

객체지향프로그래밍개념 객체지향개념특성 캡슐화 (Encapsulation) 다형성 (Polymorphism) OOP 상속성 (Inheritance) Department of Computer Engineering 4

Encapsulation 목적 Information hiding 복잡한내부구조숨김 Divide and Conquer 프로그램전체적인관점에서문제를잘게나누고해결 프로그래머실수방지 반드시필요한함수만공개설명 데이터 (data) 와이를조작하는코드 (code, control, function) 통합 객체안의코드와데이터는비공개 (private) 될수도있고공개 (public) 될수도있음 class 와 struct 의차이? (default 가 private vs. public) 예제 ) 리모콘버튼을눌렀을때내부는몰라도됨 변수 멤버 함수 1 멤버 변수 멤버 함수 2 외부 함수 3 직접변경금지 함수 1 함수 2 함수 3 Department of Computer Engineering 5

Polymorphism 다형성 (polymorphism) 모양은같지만성질은다름 Overloading 하나의이름으로두가지이상의작동을수행할수있는성질 예제 하나의인터페이스에여러방법지원 abs(), labs(), fabs() abs() 함수이름과연산자이름에사용할수있음 함수오버로딩 (overloading) 연산자오버로딩 오버로딩은 Mangling 을통해자연스럽게구현됨 리턴값, 파라미터, _ 등을함수이름에덧붙임 Overriding 객체지향개념에서중요한것은 Overriding ( 재정의 )!!! Department of Computer Engineering 6

Function Overloading and Overriding Overloading 상속과관련없고함수명동일 매개변수다름 Mangling 내부적으로사용되는함수명은매개변수와반환값포함 Overriding 상속과관련됨 상속전클래스 (super class, 기반클래스 ) 의함수를대치 이름및매개변수동일 프레임워크를통한프로그래밍을가능하게하는중요한개념 원래됨 Department of Computer Engineering 7

추상 추상화 (Abstraction) 인간 의개념을떠올려볼수있음 추상적인개념 공통적인특징인식 인간 의경계? 추상화 언제부터 인간 으로인식하는가? 엄마배속에있어도 인간? 10개월, 9개월 상실기, 수정직후 소프트웨어의목적에맞게개념정의 필요한부분만추상화 본프로그램에서이클래스는 ~ 라고정의한다. 클래스정의 Department of Computer Engineering 8

클래스 클래스및인스턴스 추상화를통해관심대상의특성을정의 Data 및 Control (Function) 통합 사용자정의타입 예제 ) 붕어빵찍는기계 인스턴스 (Instance) 또는객체 (Object) 클래스에의해실체화되어생성된것 클래스만정의해놓고쓰지않는다면효용없음 Notepad.exe라는프로그램을만들어놓고실행한메모장프로그램들 메모리에할당된공간을가지는변수 예제 ) 붕어빵 Department of Computer Engineering 9

클래스의데이터캡슐화 전역변수문제점해결 관련있는데이터묶어서캡슐화 캡슐화된데이터감추기 private, protected 외부에서사용불가능 protected : 상속시 child 클래스에서사용가능 클래스선언시접근지시자를지정하지않으면 default 는 private public 외부에서사용가능 Setter 와 Getter 사용 외부에변수를직접노출하지않고함수제공 값을 set 하고, get 하는함수들을제공 값을안전하게보호가능 Cf) struct 와의유일한차이점은 default 로 public Department of Computer Engineering 10

this Pointer 자기자신의객체를가리키는포인터 다른클래스에자기자신을매개변수로넘겨줘야할때사용 class Where { public: int data; void PrintPointer(); }; void Where::PrintPointer() { cout << 주소 : << this << \n ; } void main() { Where a,b,c; } a.printpointer(); b.printpointer(); c.printpointer(); Java에서도 this 사용 Objective-C에서는 self 사용 Department of Computer Engineering 11

상속성 (inheritance) Inheritance 클래스가상위클래스의특성을이어받을수있는특성 Modeling: 서로연관있는클래스들을계층적인구조로표현할수있으며, 자식클래스 (child class) 로갈수록일반적인것에서특수한것으로이동 실제업무에서는개발과테스트를거친안정된클래스를사용하다가수정하여야할때그클래스를상속받아서필요한부분만수정 사람 안정된클래스 MFC IS-A 관계 급여 CDocument 교수 학생 수정급여 CMyDoc 학부생 대학원생 Class Diagram Department of Computer Engineering 12

Inheritance ( 계속 ) Base Class, Super Class 또는 Parent Class 상속해주는측, 기반클래스 Derived Class 또는 Child Class 상속받는측, 파생클래스 상속의유형 단일상속 : 파생클래스가하나의기반클래스를상속 다중상속 : 파생클래스가여러개의기반클래스들을상속 base base1 base1 base2 derived base2 derived derived 단일상속다중상속 Java 에서는단일상속만지원 ( 다중인터페이스구현가능 ) Department of Computer Engineering 13

상속성및함수 Overriding 기반클래스에서상속받은멤버함수의기능대치 상속받은멤버함수의 Prototype 과똑같이재선언하여함수를작성함 Overriding 기반클래스의같은이름함수가호출되지않음 기반클래스의같은이름함수를 explicitly 호출가능 C++ 에서생성자와소멸자는호출됨 class Point { public: void show() { cout << Point\n ;}; }; class Point3D : public Point{ public: void show() { cout << Point3D - ; Point::show(); }; }; Department of Computer Engineering 14

함수의바인딩 (binding) C++ 가상함수 함수호출부분에함수가위치한메모리번지를연결시키는것 정적바인딩 (static binding) : 컴파일단계에서수행될함수의번지가결정됨 동적바인딩 (dynamic binding) : 프로그램실행시수행될함수의번지가결정됨 가상함수 기반클래스의함수선언에 virtual 키워드추가 파생클래스에서그함수오버라이딩 run-time polymorphism (dynamic binding) 지원 기반클래스포인터변수에파생클래스의객체를대입 객체의타입에따라알맞은멤버함수 ( 파생클래스의함수 ) 수행 Java 에서는 instance method 가 dynamic binding 됨 virtual 키워드필요없음 Department of Computer Engineering 15

C++ 가상함수 가상함수사용 #include <iostream.h> class base1 { public: virtual void show() { cout << base1 << endl; } }; class derived1 : public base1{ public: virtual void show() { cout << derived1 << endl; } }; void main() { base1 *p; base1 b1; derived1 d1; } p = &b1; p->show(); p = &d1; p->show(); p 의타입에맞는 show() 함수가수행됨 (dynamic binding, runtime type information management) Department of Computer Engineering 16

살면서프로그래밍이힘들었을때 처음배울때 컴퓨터가어떻게동작하는지모름 컴퓨터언어자체에대한숙련도낮음 X-Window 사용할때 내가원하던것을사용자에게요구하던방식에서사용자요구하는것을수행하는방식으로변함 생각의전환이필요했음 MFC 사용할때 C 를오래사용하다보니모듈로만들던것을 C++ 로클래스라는것을만들어사용 객체지향프로그래밍개념부족 main() 함수가없어서흐름을파악할수없었음 Department of Computer Engineering 17

MFC 가어려웠던이유 2 가지 이벤트프로그래밍 기존의 main() 함수를사용할때는흐름을프로그래머가주도함 예를들면, 파일명을입력하세요 윈도우프로그래밍에서는사용자가원할때수행 사용자가이벤트발생시키고이벤트처리함수실행 Application Framework C++ 언어를쓸줄안다고 OOP 를이해한것은아님 상속및 overriding ( 재정의 ) 사용 이미만들어진틀 (framework) 에서원하는부분만수정하는형태 흐름이 framework 안에있음 Department of Computer Engineering 18

Android Programming MFC, ios 등과방식이매우유사함잘안되는이유 흐름이보이지않음 흐름은프레임워크안에있음 남의좋은 source code 를보아도전체적으로는도움이되지않음 보는것은쉬운데실제처음부터만들어보려면막막함 이벤트프로그래밍 윈도우프로그래밍 Department of Computer Engineering 19