객체지향 프로그래밍 : 강의 개요
2018. 9. 4
순천향대학교 하상호
1
강의 개요 (1)
강의 시간 및 강의실
강의 시간 : Tue 10:30 – 11:45, Thu 10:30 – 11:45
강의실 : M610
강의 개요
객체지향 프로그래밍 언어 C++ 를 학습한다 .
여러분이 이미 또다른 객체지향 프로그래밍 언어 Java 를 수강하였다고 가정한다 .
객체지향 특징에 대해서 C++ 와 Java 를 비교한다 .
C++를 이용한 객체지향 프로그래밍을 훈련한다 .
교재
어서와 C++ 는 처음이지 !, 천인국 지음 , INFINITY BOOKS, 2017.
2
강의 개요 (2)
수강시 유의사항
이 강좌의 선수 과목은 C 프로그래밍 , Java 프로그래밍임
강의 자료는 홈페이지 (http://oopsla.sch.ac.kr/) 에 게시되며 , 수업 전에 반드시 출력해 와야 함
프로그래밍 과제물이 제시되며 , 기한내 제출해야 함
이론과 실습 동시 수강을 권장함
출석 점검을 엄격히 함
학습 평가
시험 : 중간 (25%), 기말 (25%), 퀴즈 (15%)
보고서 : 25%
출석 및 기타 : 10%
출석점검을 엄격히 :
총 5 회 이상 결시시 F 학점 (3 회 지각은 1 회 결시로 산정 )
3
강의 내용
4
Check points
여러분이 C 언어를 얼마나 알고 있는가 ?
5
Check points
여러분이 Java 를 얼마나 알고 있는가 ?
6
C++ 언어란 ?
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
C++ 주요 설계 목적
C 언어와의 호환성
C 언어의 문법 체계 계승
객체 지향 개념 도입
캡슐화 , 상속 , 다형성
소프트웨어의 재사용을 통해 생산성 향상
복잡하고 큰 규모의 소프트웨어의 작성 , 관리 , 유지보수 용이
엄격한 타입 체크
실행 시간 오류의 가능성을 줄임
디버깅 편리
실행 시간의 효율성 저하 최소화
실행 시간을 저하시키는 요소와 해결 (인라인 함수 등 )
9
C++ 특징
클래스 (class) - 클래스를 이용하여 하나의 객체의 속성과 동작들을 한곳으 로 모아서 정의할 수 있다 .
상속 (inheritance) - 클래스를 상속받아서 기존의 코드를 재사용할 수 있다 .
연산자 중복 (operator overloading) – 대상에 따라서 동일한 연산자로 새로 운 연산을 정의할 수 있다 .
함수 중복 (function overloading) – 매개 변수만 다르면 동일한 이름의 함수
를 여러 개 만들 수 있다 .
new 와 delete 연산자 – 동적 메모리 할당과 해제를 담당하는 연산자이다 .
제네릭 (generics) – 클래스 정의를 자료형에 상관없이 재사용하는 기술이
다 .
C++ 의 실행 속도
C++ 의 장점
C++ 로 작성된 프로그램은 속도가 빠르다 .
C++ 은 멀티패러다임 프로그래밍을 지원한다 . 즉 절차지향 , 객체 지향 , 제 네릭 방법을 동시에 지원한다 .
하드웨어에 접근할 수 있다 .
메모리를 효율적으로 사용한다 .
C 언어 프로그램을 그냥 가져다가 사용할 수 있다 .
고성능의 게임이나 인공지능 , 장치 드라이버에 적합하다 .
C++ 언어의 문제점
캡슐화의 원칙이 무너짐
C++에서 전역 변수와 전역 함수를 사용할 수 밖에 없음
부작용 (side effect) 발생 염려
13
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
디버깅
오류 발생
오류 수정
C++ 프로그램 작성 및 컴파일
편집
C++ 소스 프로그램은 텍스트 파일
아무 텍스트 편집기로 편집 가능
C++ 소스 프로그램의 표준 확장자는 .cpp
C++ 통합 개발 소프트웨어 이용 추천
C++ 소스 편집 , 컴파일 , 링킹 , 실행 , 디버깅 등 모든 단계 통합 지원
대표적인 소프트웨어 - Visual Studio
컴파일
C++ 소스 프로그램을 기계어를 가진 목적 파일로 변환
cpp 파일을 obj 파일로 변환
15
링킹
링킹
목적 파일끼리 합쳐 실행 파일을 만드는 과정
목적 파일은 바로 실행할 수 없음
목적 파일과 C++ 표준 라이브러리의 함수 연결 , 실행 파일을 만드는 과정
16 hello.obj
cout
<<
표준 C++ 라이브러리
링킹
<<
cout
hello.exe
hello.obj + cout 객체 + << 연산자 함수 => hello.exe 를
만듬
프로그램 실행과 디버깅
실행 파일은 독립적으로 바로 실행 가능
실행 중에 발생하는 오류
원하는 결과가 나오지 않거나 실행 중에 프로그램의 비정상 종료
디버깅
실행 중에 발생한 오류를 찾는 과정
디버거
디버깅을 도와주는 프로그램
컴파일러를 만드는 회사에서 함께 공급
소스 레벨 디버깅
C++ 소스를 한 라인씩 실행하고 변수 값의 변화를 보면서 오류 발견
Visual Studio는 소스 레벨 디버깅 지원
17