• 검색 결과가 없습니다.

객체지향 프로그래밍 : 강의 개요

N/A
N/A
Protected

Academic year: 2021

Share "객체지향 프로그래밍 : 강의 개요"

Copied!
17
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

객체지향 프로그래밍 : 강의 개요

2018. 9. 4

순천향대학교 하상호

1

(2)

강의 개요 (1)

강의 시간 및 강의실

강의 시간 : Tue 10:30 – 11:45, Thu 10:30 – 11:45

강의실 : M610

강의 개요

객체지향 프로그래밍 언어 C++ 를 학습한다 .

여러분이 이미 또다른 객체지향 프로그래밍 언어 Java 를 수강하였다고 가정한다 .

객체지향 특징에 대해서 C++ 와 Java 를 비교한다 .

C++를 이용한 객체지향 프로그래밍을 훈련한다 .

교재

어서와 C++ 는 처음이지 !, 천인국 지음 , INFINITY BOOKS, 2017.

2

(3)

강의 개요 (2)

수강시 유의사항

이 강좌의 선수 과목은 C 프로그래밍 , Java 프로그래밍임

강의 자료는 홈페이지 (http://oopsla.sch.ac.kr/) 에 게시되며 , 수업 전에 반드시 출력해 와야 함

프로그래밍 과제물이 제시되며 , 기한내 제출해야 함

이론과 실습 동시 수강을 권장함

출석 점검을 엄격히 함

학습 평가

시험 : 중간 (25%), 기말 (25%), 퀴즈 (15%)

보고서 : 25%

출석 및 기타 : 10%

출석점검을 엄격히 :

총 5 회 이상 결시시 F 학점 (3 회 지각은 1 회 결시로 산정 )

3

(4)

강의 내용

4

(5)

Check points

여러분이 C 언어를 얼마나 알고 있는가 ?

5

(6)

Check points

여러분이 Java 를 얼마나 알고 있는가 ?

6

(7)

C++ 언어란 ?

(8)

8

C++ 기원

Ken Tompson Martin Richards

Ken Tompson 과 Dennis Ritchie Bjarne Stroustrup

Assembly

BCPL

Fortran

Algol

Basic

C

C++

Java

C#

Javascript

Objective-C B

1970

1972

1983

1995 1967

1954

2000

1958

1964

Visual Basic 1991

1995

1983 Perl

1987

1995 PHP

C++98

1998

C++03

2003

C++11

2011

C++14

2014

C+

+17

2017

C+

2020 +20

C++

표준 변화

1979

(9)

C++ 주요 설계 목적

C 언어와의 호환성

C 언어의 문법 체계 계승

객체 지향 개념 도입

캡슐화 , 상속 , 다형성

소프트웨어의 재사용을 통해 생산성 향상

복잡하고 큰 규모의 소프트웨어의 작성 , 관리 , 유지보수 용이

엄격한 타입 체크

실행 시간 오류의 가능성을 줄임

디버깅 편리

실행 시간의 효율성 저하 최소화

실행 시간을 저하시키는 요소와 해결 (인라인 함수 등 )

9

(10)

C++ 특징

클래스 (class) - 클래스를 이용하여 하나의 객체의 속성과 동작들을 한곳으 로 모아서 정의할 수 있다 .

상속 (inheritance) - 클래스를 상속받아서 기존의 코드를 재사용할 수 있다 .

연산자 중복 (operator overloading) – 대상에 따라서 동일한 연산자로 새로 운 연산을 정의할 수 있다 .

함수 중복 (function overloading) – 매개 변수만 다르면 동일한 이름의 함수

를 여러 개 만들 수 있다 .

new 와 delete 연산자 – 동적 메모리 할당과 해제를 담당하는 연산자이다 .

제네릭 (generics) – 클래스 정의를 자료형에 상관없이 재사용하는 기술이

다 .

(11)

C++ 의 실행 속도

(12)

C++ 의 장점

C++ 로 작성된 프로그램은 속도가 빠르다 .

C++ 은 멀티패러다임 프로그래밍을 지원한다 . 즉 절차지향 , 객체 지향 , 제 네릭 방법을 동시에 지원한다 .

하드웨어에 접근할 수 있다 .

메모리를 효율적으로 사용한다 .

C 언어 프로그램을 그냥 가져다가 사용할 수 있다 .

고성능의 게임이나 인공지능 , 장치 드라이버에 적합하다 .

(13)

C++ 언어의 문제점

캡슐화의 원칙이 무너짐

C++에서 전역 변수와 전역 함수를 사용할 수 밖에 없음

부작용 (side effect) 발생 염려

13

(14)

C++ 프로그램 개발 과정

14 컴파일

소스 파일

(hello.cpp) 목적 파일

(hello.obj)

C++ 라이브러리

C++ 소스 프로그램 작성

#include <iostream>

int main() { std::cout <<

"Hello";

return 0;

}

_main,12

#

$<<0101 0

0000011 1

_Hello00 1

cout <

...

<

..

링킹

0101000 0010001 0101001 1110101 1010101 0010111 010101 실행 파일 (hello.exe)

실행

Hello

디버깅

오류 발생

오류 수정

(15)

C++ 프로그램 작성 및 컴파일

편집

C++ 소스 프로그램은 텍스트 파일

아무 텍스트 편집기로 편집 가능

C++ 소스 프로그램의 표준 확장자는 .cpp

C++ 통합 개발 소프트웨어 이용 추천

C++ 소스 편집 , 컴파일 , 링킹 , 실행 , 디버깅 등 모든 단계 통합 지원

대표적인 소프트웨어 - Visual Studio

컴파일

C++ 소스 프로그램을 기계어를 가진 목적 파일로 변환

cpp 파일을 obj 파일로 변환

15

(16)

링킹

링킹

목적 파일끼리 합쳐 실행 파일을 만드는 과정

목적 파일은 바로 실행할 수 없음

목적 파일과 C++ 표준 라이브러리의 함수 연결 , 실행 파일을 만드는 과정

16 hello.obj

cout

<<

표준 C++ 라이브러리

링킹

<<

cout

hello.exe

hello.obj + cout 객체 + << 연산자 함수 => hello.exe 를

만듬

(17)

프로그램 실행과 디버깅

실행 파일은 독립적으로 바로 실행 가능

실행 중에 발생하는 오류

원하는 결과가 나오지 않거나 실행 중에 프로그램의 비정상 종료

디버깅

실행 중에 발생한 오류를 찾는 과정

디버거

디버깅을 도와주는 프로그램

컴파일러를 만드는 회사에서 함께 공급

소스 레벨 디버깅

C++ 소스를 한 라인씩 실행하고 변수 값의 변화를 보면서 오류 발견

Visual Studio는 소스 레벨 디버깅 지원

17

참조

관련 문서

프로그래밍

프로그래밍

 클래스계층 공유어프로치에서는, 부모(parent)클래스에 정의되어 있는 정보의 조작은 자식(child)클래스에서 정의되지 않고, 정의되지 않은 나머지 것만을

TransferDatabase 다른 데이터베이스 파일과의 가져오기, 내보내기, 연결 등을 지원한다. TransferSpreadsheet 스프레드시트

변화과정의 개요.. 동·서양 유아교육사상 변화과정의 개요.. 동·서양 유아교육사상의 흐름과 교류.. 서양 현대

• 이번 실습에서는 Practice13_1 프로그램을 수 정하여, 곡선의 컨트롤 포인트를 마우스의 드 래깅으로 이동하여 곡선을 업데이트하도록 할 것이고, 곡선을

부록 경제활동인구조사 개요... 부록

첫 번째 worker 함수 호출 10번 결과를 출력. 두 번째 worker 함수 호출