Transcript

PROGRAM LANGUAGE

Jo, Heeseung

2

이번 시간에 배우는 것들

7.1 프로그래밍 언어의 역사

• 초창기 언어, 3세대 언어, 4세대 언어

7.2 주요 프로그래밍 언어

7.3 프로그램의 구현

• 프로그래밍과 개발도구, 프로그램 개발 과정

7.4 전통적 프로그래밍 개념

• 변수와 자료형, 자료구조, 상수와 리터럴, 배정문과 연산자 우선순위, 제어문, 주석

7.5 프로시저 단위

• 프로시저의 구성, 지역변수와 전역변수, 매개변수의 전달

7.6 객체지향프로그래밍

• 객체지향과 절차지향, 클래스와 객체, 생성자를 갖는 클래스, 클래스의3가지 특성

7.1 프로그래밍 언어의 역사

4

1-세대 프로그래밍 언어

기계어(machine language)

• 이진수들로 인코딩된 일련의 명령들로 이루어짐

• 디버깅(debugging) 작업 = 2진수와의 전쟁

- 디버깅 : 오류 찾아서 고치는 과정

156C166D5056306EC000

5

2-세대 프로그래밍 언어

어셈블리어(Assembly language) : 기계 명령을 표현하기 위한 기호체계

• 명령 코드는 기호식 이름으로 표현

• 어셈블러(assembler)라고 불리는 번역 프로그램에 의해 기계어로 변환됨

- 프로그래머는 기계처럼 사고해야 함

- 기계 명령과 어셈블리 명령 사이에는 일대일 대응관계가 존재

• 기계어 대비 획기적인 발전

• 문제점 : 기계 종속적

- 어셈블리어는 컴퓨터마다 다름

- 컴퓨터가 바뀌면 새로 배워야 함

LD R5, Price

LD R6, ShippingCharge

ADDI R0, R5, R6

ST R0, TotalCost

HLT

식별자(identifier): 메모리 주소를 나타내는 의미있는 이름이며, 프로그래머가 정한다

6

기계어를 16진수로 보여줌어셈블리어로 보여줌

명령어 주소

7

3-세대 프로그래밍 언어

절차지향 언어

• 고급 수준의 프리미티브 집합을 가짐

- 하나의 고급 수준 프리미티브가 요청하는 활동을 수행하기 위해 여러 개의기계어 명령을 조합(compile)

- TotalCost = Price + ShippingCharge

• 특징 : 기계 종속성(machine dependency) 일부 해소

- 그래도 기계마다 조금씩 틀림 (예: C의 int) -> 보완책: 표준의 제정 (예: ANSI C)

• 번역기(translator) : high-level P/L -> machine language

- 컴파일러(compiler), 인터프리터(interpreter)

• 가장 널리 알려진 3세대 언어

- FORTRAN(FORmula TRANslator)

- COBOL(COmmon Businsess-Oriented Language)

- C

- ... ...

8

4-세대 프로그래밍 언어

4세대 언어 : 절차지향 언어 이후의 프로그래밍 언어

객체지향 언어(Object oriented language)

• 프로그래밍을 함에 있어서 데이터와 그 데이터를 처리할 메소드를 묶어객체화

• 객체들을 조립하여 목표를 해결

• C++, C#, Java 등

스프레드시트 프로그램

• 표 계산 관련 프로그램을 작성할 수 있음

스크립트 언어

• 웹과 데이터베이스를 쉽게 연결하여 프로그램을 개발할 수 있는 언어

데이터베이스 질의 언어(query language)

• 비절차적 중심 언어 : 프로그래머가 원하는 결과를 얻기 위해서 절차를따를 필요가 없음

• 대용량 데이터를 처리하기 위한 데이터베이스 관련 프로그램을 개발할수 있는 언어

9

4-세대 프로그래밍 언어

비주얼 프로그래밍 언어(Visual Programming Language)

• 비주얼 베이직, 델파이

10

4-세대 프로그래밍 언어

스크래치

• 코드 없는 정해진 블록으로 코딩

• 진보된 비주얼 프로그래밍 언어

7.2 주요 프로그래밍 언어

12

FORTRAN

FORmula TRANslator

• 최초의 high-level P/L

• 수학 계산에 아주 강함

• 언어 구조가 단순해 지금도 기술 계산 분야 등에서는 사용

• FORTRAN IV, FORTRAN 77, FORTRAN 90으로 발달

• 특징: 위치에 따라 명령을 구분

13

FORTRAN

배열의 합을 구하는FORTRAN 예제

14

Basic

Beginner's All-purpose Symbolic Instruction Code

• 1963년에 개발

• 대화형의 영어 단어를 바탕으로 약 200여 개의 명령어들로 구성

• 가장 쉬운 대화형 프로그래밍 언어

• 1980년대에 개인용 컴퓨터의 출현과 함께 기본 개발 언어로 탑재

- 범용적인 언어로 널리 사용

• 마이크로소프트는 베이직을 기본으로 비주얼베이직(Visual Basic)이라는프로그램 언어를 개발

15

Pascal

Blaise Pascal의 이름에서 유래

1971년 Wirth 교수가 개발 (전산학자)

• 잘 정의된 문법 -> 교육용으로 최적

이후, 수많은 language들에 지대한 영향

• C : Pascal의 사투리

C 언어에 비해 엄격한 구조를 요구

현재는 도태되는 분위기

16

Pascal

배열의 합을 구하는 Pascal 예제

17

C

이름의 유래: BCPL(Basic Combined Programming Language) → B → C

• 개발자: 벨 연구소의 Dennis Ritchie

개발 이유

• O/S 개발용: UNIX system

• compiler 개발용: 이후의 대부분의 compiler

특징

• 하드웨어에 대한 통제가 가능

• 프로그램의 이식성(portability)이 높음 (대부분의 고급 언어들 특징)

• 풍부한 연산자와 데이터 형(data type)을 갖고 있기 때문에 범용프로그래밍 언어로서 널리 보급

• 운영체제, 컴파일러, 통합개발환경 등이 대부분 C 언어로 개발

근황

• C언어는 등장 이후 언어의 역사에 큰 영향을 줌

• UNIX 등의 운영체제의 기능을 사용하는데 편리한 방법을 제공함

• C++의 등장으로 계속 발전

18

C

배열의 합을 구하는 C예제

19

C++

이름의 유래: C -> C++

• C+, D 모두 있었음

Bjarne Stroustrup이 OOP를 쓰기 위해 개발

특징: object, class의 도입

• C의 유연성에 객체지향의 편리성을 접목시킴

• 기존의 C언어로 개발된 모든 프로그램을 수정 없이 사용 가능

• C언어에 익숙해지면 C++도 빠른 적응 가능

• 대부분의 운영체제에서 C++를 지원

OOP의 대중화에 기여

근황

• Java와 같은 새로운 객체지향 언어의 기틀이 됨

• 현재 수많은 사용자들을 보유

20

C++

“Hello World”를 출력하는 C++예제

21

Java vs. C#

Java

• 이름의 유래: 커피 이름

• C++와 비슷하면서, 불필요한 기능 제거

• Sun이 Internet이나, embedded system 용으로 설계

• 운영 체제나 중앙처리 장치에 관계없이 모든 플랫폼에서 사용 가능

• 자바와 플랫폼 사이에 자바 가상 머신이 인터페이스 역할을 수행

C#

• MS가 Java에 대항해서 만든 언어

- 거의 Java 비슷, 몇가지 첨가

• .NET의 중심 (.NET : MS의 XML 기반 웹서비스플랫폼)

22

Python

Python

• 1989년, 크리스마스 주에 연구실이 닫혀 있어서심심한 김에 만들었다 - Guido van Rossum

• 현재 미국의 대학에서 컴퓨터 기초과목으로가장 많이 가르치는 프로그래밍 중 하나

• 인터프리터 언어

• 간단한 문법구조를 가진 대화형 언어

• 동적 자료형(dynamic typing)을 제공

• 변수를 선언하지 않고 사용

• 여러 플랫폼에서 사용되는 다양한 영역에 활용

• 프로그램을 쉽고 빠르게 개발

23

Python

문자열 "Hello World!" 를 출력하는 파이썬 소스

공식 사이트

• https://www.python.org/

• 튜토리얼 https://docs.python.org/3/tutorial

24

UNIX 기반의 언어

ProC

• C언어의 UNIX 확장판

• C언어를 사용한 UNIX의 데이터베이스 관리에 많이 사용함

C

• UNIX의 가장 중심적 언어

• UNIX 자체를 C 언어로 제작하여 UNIX 프로그래밍에 필수임

Shell 프로그래밍

• 여러 가지 Shell 명령어를 순차적으로 수행함

• Shell : UNIX에서 대화형 사용자 인터페이스를 부르는 용어로, 사용자가입력하는 명령어를 이해하고, 실행하는 역할을 수행

25

Linux 기반의 언어

Perl

• 인터넷의 등장과 함께 인기를 누린 스크립트 언어임

• 초보자도 배우기 쉽고 객체지향적인 특징을 지원함

PHP

• 인터넷에서 사용하는 대표적인 스크립트 언어임

• 컴퓨터에서 실행하지 않고 웹 서버에서 실행되는 대표적인 Server Side Script 언어임

Python

• 가장 최근에 등장한 강력하고 배우기 쉬운 언어

• 여러 플랫폼에서 사용되는 다양한 영역에 활용

26

웹 기반의 언어

JSP

• Java Server Pages : 자바 서버 페이지

• HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를생성하여 웹 브라우저에 돌려주는 언어

• 서블릿(Java Servlet)과는 달리 HTML 표준에 따라 작성되므로 웹디자인하기가 상당히 편리함

ASP

• Active Server Page : 액티브 서버 페이지

• 마이크로소프트사에서 개발한 서버 측의 웹 스크립트 환경

• 마이크로소프트 데이터베이스의 접근이 매우 편리함

7.3 프로그램 구현 과정

고급 언어로 작성된 프로그램을 컴퓨터에서 실행 가능한형태로 변환하는 과정

28

프로그래밍 개요

프로그램

• 컴퓨터에서 특정 목적의 작업을 수행하기 위해 관련된 명령어와 자료를모아 놓은 것이 프로그램(program)

• 컴퓨터에게 지시할 일련의 처리 작업 내용을 담고 있음

• 컴퓨터에서 특정 목적의 일을 수행하는 프로그램을 만드는 과정을"프로그래밍한다"라고 표현

프로그래머(programmer)

• 프로그램을 만드는 사람

• 넓은 의미로 개발에 참여하는 사람을 개발자(developer)라 할 수 있음

• 코더(coder)

개발 도구(development tools)

• 선정한 언어를 이용하여 프로그램을 개발하기 위한 환경이 필요

29

프로그램 개발 환경

편집기(Editor)

• 프로그램 명령어인 프로그래밍 언어의 내용을 편집

컴파일러(Compiler)

• 개발 도구에서 가장 중요

• 고급 프로그래밍 언어를 컴퓨터가 이해할 수 있는 기계어로 변환

디버거(Debugger)

• 작성된 프로그램에서 발생하는 프로그램 오류를 쉽게 찾아 수정 할 수있도록 도와주는 프로그램

링커(linker)

• 여러 object 파일을 하나의 실행 파일로 만들어 주는 기능

로더(loader)

• 실행 파일을 메모리 셀에 올려주는 기능

30

프로그램 개발 환경

통합개발환경: Integrated Development Environments (IDE)

• 프로그램을 개발하는데 필요한 컴파일러, 디버거, 링커, 에디터 등을통합적으로 제공하는 개발 환경을 통합개발환경

• 마이크로소프트 사의 비주얼 스튜디오 익스프레스(Microsoft Visual Studio Express) 버전

- 무료 배포(www.microsoft.com/ko-kr/download)하는 제품

31

프로그램 구현 과정 : 소스 작성과 컴파일

소스 코드 작성

• 프로그램 언어를 이용하여 원하는작업을 기술한 내용을소스 코드(source code) 또는간단히 코드(code)라 함

컴파일

• 소스(source) 파일(원시 파일)을목적 파일(Object file)로 변환 과정

• 컴파일러

- 컴파일을 해주는 프로그램

32

프로그램 구현 과정 : 소스 작성과 컴파일

번역기

• 컴파일러 : 고급언어를 기계어로 변환

• 어셈블러 : 어셈블리어를 기계어로 변환

33

프로그램 구현 과정 : 소스 작성과 컴파일

컴파일러(Compiler)

• 원시 코드 전체를 읽은 다음 이를 기계어로 번역

• 컴파일러는 한번 컴파일 한 후에는 수정이 없다면 매번 컴파일 할 필요없이 빠른 시간 내에 프로그램 실행이 가능

인터프리터(Interpreter)

• 고급 언어를 기계어로 번역

• 매 실행마다 원시 코드를 한 줄씩 읽어 들여 목적 코드로 바꾸어줌

• 컴파일러에 비해 번역 속도가 느림

• 프로그램을 작성할 때 보다 융통성을 가질 수 있음

34

프로그램 구현 과정 : 소스 작성과 컴파일

컴파일러와 인터프리터의 특징

35

프로그램 구현 과정 : 소스 작성과 컴파일

컴파일러와 인터프리터의 특징을 모두 갖는 방식

• 자바, C#

• 이들 언어는 컴파일러가 존재하여 컴파일 과정이 필요

• 컴파일 된 실행 파일을 실행할 때는 인터프리터 방식과 같이인터프리터가 필요

36

프로그램 구현 과정 : 링킹(linking)

링커(linker)

• 목적 파일을 실행 가능한 실행 파일(execute file)로 만들어주는 시스템소프트웨어

• 여러 개의 프로그램 각각을 컴파일하여 목적 파일을 만들게 되는데, 링커는 이러한 여러 개의 목적 파일들을 라이브러리 함수와 연결해서하나의 파일로 합치는 작업을 수행

실행 프로그램(executable program)

• 링킹 작업 결과 생성되는 프로그램을 실행 프로그램(executable program)

• (예) test.exe

라이브러리(library)

• 프로그래머들이 많이 사용되는 기능을 미리 작성해 놓은 것

• (예) 입출력 기능, 파일 처리, 수학 함수 계산

37

프로그램 구현 과정 : 로딩 및 실행

로더(loader)

• 메모리에 실행 파일을 적재하는 시스템 소프트웨어

38

프로그램 구현 과정 : 디버깅

디버깅(debugging)

• 소스에 존재하는 에러(오류)를 잡는 것

디버거(debugger)

• 프로그램의 명령을 수행함에 있어 컴퓨터의 상태를 보여주거나오류(또는 에러) 발생시 오류를 쉽게 찾을 수 있도록 도와주는 프로그램

처음부터 에러가 없는 프로그램을 작성하기란 거의 불가능

그러므로 디버깅 과정은 매우 중요

39

프로그램 구현 과정 : 디버깅

오류의 종류

• 컴파일 오류 : 대부분 문법적인 오류

- 예) He go to school

• 실행 오류 : 컴파일시는 오류가 없으나 실행하면서 발생하는 오류

- 예) 실행 중에 0으로 나누는 연산

- 예) 잘못된 메모리 주소에 접근

• 논리 오류 : 논리적으로 잘못되어서 결과가 의도했던 대로 나오지 않는오류

- 예) 빵을 구울 때 빈 그릇에 반죽을 넣고 오븐에 넣어야 하는데, 빈 그릇만오븐에 넣은 경우

- int k, i=0;for (i=0; i<10; i++) { k=k+i; } // 1-10까지 합 구하기

오류가 발생하면 소스 프로그램을 수정한 후에 다시 컴파일

7.4 전통적 프로그래밍 개념

41

프로그래밍 개념

프로그램의 구성

• 선언문(declarative statement) : 사용할 변수/메소드 정의

• 명령문(imperative statement) : 실제 작업을 수행

• 주석(comments) : 설명, 내부 문서(internal documentation)

- 프로그램이 수행하는 기능을 사람이 이해하기 쉬운 형식으로 설명함으로써프로그램을 읽기 쉽게 해 줌

42

변수와 자료형

변수(variable)

• 주기억장치(memory)의 번지수 대신 쓰는 이름

• 프로그램에서 일시적으로 데이터를 저장하는 공간

• 변수는 물건을 저장하는 상자와 같으며, 해당 주소 위치의 값은프로그램 실행 중 변경이 가능함

• 많은 프로그래밍 언어에서는 변수들을 다른 곳에서 사용하기 전에선언문을 통해 미리 표시해야 함

int k = 3;

variable

43

변수와 자료형

자료형(data type)

• 데이터 항목들을 어떻게 인코딩할지와, 그러한 데이터에 대해 수행될 수있는 연산 규정

• 자료형마다 필요로 하는 메모리 크기가 다름

• 예) char : 1바이트

프리미티브 자료형(primitive data type)

• 정수(integer) : 2의 보수로 표현한 정수형

• 실수(real) : 부동소수(floating point)로표현한 실수형 (float)

• 문자(character) : ASCII로 표현한 문자형

다양한 자료형이 필요한 이유

• 상자에 물건을 저장하는 것과 같음

• 물건이 상자보다 크면? 물건이 상자보다 작으면?

float Length, Width;int Price, Total, Tax;char Symbol;

int WeightLimit = 100;

44

자료구조

자료구조(data structure)

• 데이터에 대한 개념적 형태나 배치

배열(array): 그 안의 항목들이 모두 동일한 타입인 데이터 블록

• 2차원 배열: 행들과 열들로 이루어짐

• 인덱스(index): 각 원소의 위치를 표시

• 예) 2개의 행과 9개의 열을 가지는 2차원 배열

C

int Scores[2][9];

FORTRAN

INTEGER Scores(2,9)

45

자료구조

집합체(aggregate)

• 타입과 크기가 다를 수도 있는 데이터 항목들의 블록

• 각 항목은 필드(field)라고 함

• 필드에 대한 접근은 이름을 통해 이루어짐

• C의 structure(구조체)

struct {char Name[25];int Age;float SkillRating;

} Employee;

<구조체 Employee의 개념적 구성>

46

상수와 리터럴

리터럴(literal)

• 어떤 값을 그대로 적는 것

• 값이 미리 정해져서 고정된 값

상수(constant)

• 변경되지 않는 특정 값에 서술적 이름을 부여

• 의미가 더 잘 표현되도록

EffectiveAlt = Altimeter + 645;

constant

literal

const int AirportAlt = 645;EffectiveAlt = Altimeter + AirportAlt;

47

배정문

배정문(assignment statement)

• 변수에 값을 배정

Z = X + Y; // CZ := X + Y // AdaZ ← X + Y // APL

48

연산자

연산자 우선순위(operator precedence)

• 연산자들 간의 우선 순위 관계

• 예: 4 + 7 * 34 + (7 * 3) 또는 (4 + 7) * 3

중복정의(overriding)

• 피연산자(operand)에 따라 연산자(operator)가 다른 의미를 가짐

• 4 + 6 : 정수(integer) 끼리의 더하기

• "abc" + "def" : 문자열(string) 끼리의 연결

• C#, Ada, C++ 등의 언어에서 지원

49

제어문

제어문(control Statement) : 프로그램의 실행 순서 변경

- if-then-else

- while

- switch

- for

대부분의 language 가 가지고 있으나, 형태는 조금씩 틀림

50

제어문 if

Python에서의 if

if (condition):

statementA

else:

statementB

C, C++, C#, Java 등에서의 if

if (condition)

statementA;

else

statementB;

Ada에서의 if

IF condition THEN

statementA;

ELSE

statementB;

END IF;

51

제어문 switch

C, C++, C#, Java 등에서의 switch

switch (variable) {

case 'A': statementA; break;

case 'B': statementB; break;

case 'C': statementC; break;

default: statementD;

}

Ada에서의 switch

CASE variable IS

WHEN 'A'=> statementA;

WHEN 'B'=> statementB;

WHEN 'C'=> statementC;

WHEN OTHERS=> statementD;

END CASE;

52

제어문 while

Python에서의 while

while (condition):

body

C, C++, C#, Java 등에서의 while

while (condition)

{ body }

Ada에서의 while

WHILE condition LOOP

body

END LOOP;

53

제어문 for

for 루프 구조와 C, C++, C#, Java 등에서의 for 문

54

주석

주석(comment) : internal documentation

• program의 readability를 높이는 방법

• 특별한 기호로 시작과 끝을 표현

- /* This is a comment */

• 특별한 기호로 시작, 한줄 끝(line end)이 끝

- // This is a comment

7.5 프로시저 단위

56

프로시저

프로시저(procedure)

• 주프로그램(main program)과는 별도로 존재

• 호출(call)/리턴(return) 과정으로 실행되는 프로그램 단위(program unit)

• 다양한 용어가 사용됨:

- 부프로그램(subprogram), 서브루틴(subroutine), 프로시저(procedure), 메쏘드(method), 함수(function)

57

프로시저의 구성

대개 개별 프로그램 단위로 작성

• 프로시저 헤더(procedure's header)

• 프로시저의 세부사항을 정의하는 문장들

- 변수들을 기술하는 선언문

- 프로시저가 수행되어야 할 단계들을 기술하는 명령문

58

지역 & 전역 변수

참조범위(scope)

• 어떤 변수가 참조될 수 있는 프로그램의 부분

• 지역 변수(local variable) : 프로시저 내에서만 사용

• 전역 변수(global variable) : 프로그램 내의 모든 프로시저가 공유

전역 변수의 단점

• 연관된 프로시저를 알기 어려움

• 프로시저의 재사용을 방해

59

매개변수

매개변수 전달(parameter passing)

• 프로시저에 필요한 정보를 주고 받는 방법

ProjectionPopulation(0.03);

// 성장률을 0.03을 사용하여 ProjectionPopulation을 적용

60

형식 매개변수, 실 매개변수

형식 매개변수(formal parameter) : 프로시저 작성시 (이름)

• 프로시저 내부의 일반형 명칭

void ProjectionPopulation(float GrowthRate) {

// do something

}

실 매개변수(actual parameter) : call 될 때의 (값)

• 프로시저가 호출될 때 정해지는 형식 매개변수의 정확한 의미

ProjectionPopulation(0.03);

// 성장률로 0.03을 사용하여 ProjectionPopulation을 적용

61

매개변수 전달 방법

값을 함수 인자로 받기만 하는 경우 (in)

• 값에 의한 전달(call by value)

• 복사본이 전달

값을 함수 내에서 바꾸는 경우 (out)

• 참조에 의한 전달(call by reference)

• C에서는 포인터(pointer)

• C++에서는 레퍼런스(reference)로 해결

62

값에 의한 전달과 프로시저의 실행

63

참조에 의한 전달과 프로시저의 실행

64

참조에 의한 전달과 프로시저의 실행

예) swap function

int main(){

int a=3, b=2;swap(a, &b);

}

void swap(int *xp, int *yp) {

int t0 = *xp;int t1 = *yp;*xp = t1;*yp = t0;

}

7.6 객체지향 프로그래밍

66

객체지향과 절차지향

절차지향(Procedural) 언어

• 절차지향에서 전체 과정을 나누어 처리하는 단위를 함수(function)라 함

• 절차지향 언어는 문제를 여러 개의 작은 함수로 나누어 그 문제를 해결

• 절차지향이 동사 중심의 프로그래밍 방식

객체지향(Object oriented) 언어

• 객체지향은 명사 중심의 프로그래밍 방식

• 객체는 자료와 일련의 처리 명령을 하나로 묶어 놓은 메소드로 구성

• 프로그램 단위로 함수보다 높은 수준의 모듈화 방법

67

절차지향 프로그래밍 vs 객체지향 프로그래밍

절차적 프로그래밍은 "어떤 처리 함수를 수행하는가?" 에 중점

객체지향 프로그래밍은 "어떤 객체가 동작을 하는가?" 에 중점

객체지향프로그래밍절차지향프로그래밍

68

객체 지향 프로그래밍

객체 지향 프로그래밍

• 관련된 함수와 변수를 묶어서 '객체(object)'를 만들고, 객체 단위로프로그래밍하기 위한 방법

69

클래스와 객체

클래스(class)

• 사용자 정의 데이터타입이라 생각하면 편함(일종의 데이터 형 역할)

• 하지만 클래스에는 변수라는 저장공간 외에 기능이라는 프로시저가 포함

• 객체가 가지는 공통된 특성을 기술하는 것

• 클래스에 비유될 수 있는 것 : 핸드폰 설계도

객체(object)

• 클래스 형에 의해 만들어진 실제 사용되는 변수와 메소드

• 구체적인 값을 갖는 실체

• 객체에 비유 될 수 있는 것 : 설계도에 따라 만들어진 핸드폰

class Laserclass {int power;void stop() { ... ... }

};

Laserclass Laser1, Laser2;Laser1.power=30;Laser2.power=50;Laser1.stop();

70

클래스의 정의

컴퓨터 게임에서 레이저 무기를 기술하는 클래스의 구조

71

객체의 구성요소

인스턴스 변수(instance variable) : 객체 내부의 변수

• 객체 내부의 정보 저장

메쏘드(method) : 객체 내부의 프로시저

• 객체가 수행할 수 있는 행위를 기술

Laser1.RamainingPower = 50;

Laser1.turnRight();

72

생성자

생성자(constructor)

• 객체가 처음 생성될 때 객체의 초기화에 사용되는 특별한 메소드

• 클래스의 이름과 동일

LaserClass Laser1(50);

73

클래스 특성 - 캡슐화

캡슐화(encapsulation)

• 객체의 내부 구성요소에 대한 접근을 제한하기 위한 수단

- 객체를 사용하기 위해서 필요한 부분을 제외한 나머지 부분을 캡슐로 감싸서숨기는 것

• 전용(private) 속성과 공용(public) 속성

74

클래스 특성 - 상속

상속(inheritance)

• 기존의 클래스가 가진 기능을 이어 받아서 새로운 클래스를 정의

• 재사용성 증대

75

클래스 특성 - 다형성

다형성(polymorphism)

• 메쏘드 호출이 적용 대상 객체에 따라 달리 해석

• 예 : HWP문서, HTML문서 등등

- 문서를 저장하기 위해 문서 안에 있는 각 객체에 "자신을 저장하라"라는메시지를 보내면 각 객체는 각 객체에 맞는 방식으로 저장

- 여기서 메쏘드는 동일한 방식으로 "자신을 저장하라"

- 적용대상에 따라 저장방식이 다르게 적용됨


Recommended