C++ 프로그래밍 2009년 2학기 전자정보공학대학 컴퓨터공학부
담당교수 박상일 이메일: sipark@sejong.ac.kr 홈페이지/강의게시판: http://dasan.sejong.ac.kr/~sipark/class2008/cp 전화: 02-3408-3832 연구실: 충무관 1130호 Office hour: 화, 목요일 15:00~16:30
교수소개 Department of Digital Contents Specialized for Computer Graphics
과목소개 C++ 프로그래밍 수업 이론 + 실습 강의 시간 화, 목요일 16:30~18:00 율곡관 304호
평가방법 중간고사 30% 기말고사 40% 과제 및 수시고사 20% 출석 10% (결석 6회 이상 시 F)
교재 뇌를 자극하는 C++ 프로그래밍 한빛미디어 참고도서
강의내용 C/C++ or C++?
C++ Bjarne Stroustrup "B-yar-ne Strov-stroop" http://www.research.att.com/~bs/
C++ = 향상(확장)된 C
C언어의 특성 중급언어 고급 언어 + 저급언어(어셈블리(Assembly)) 중급언어 고급언어: 인간이 쉽게 이해할 수 있는 문법 구조 저급언어: 기호화된 상수, 또는 포인터를 이용한 비트 단위의 조작으로 여러 하드웨어 장치들을 제어가능
C언어의 특성 구조적 언어 함수 모듈화 코드와 자료의 분리 기능들을 서로 분리하여 설계 코딩, 후에 상호 연관 필요한 모든 정보와 명령어들을 분리하고 숨길 수 있다 함수 "함수(function)의 집합” 함수 = "빌딩 블록(building block)“ 한 프로그래머의 코드블록을 다른 프로그래머의 코드에 영향을 미치지 않도록 독립
C언어의 특성 포인터 개념 변수의 현재 내용을 간접적으로 참조 메모리내의 다른 저장내용을 자유롭게, 융통성 있게 접근 중대한 오류의 원인이 되기도 함
C언어의 특성 A Programmer’s Best Friend 비 프로그래머용 언어 C 언어: 코볼(COBOL): 상업분야 베이직(BASIC): 일반인 대상 포트란(FORTRAN): 수학분야 C 언어: 특정 분야가 아닌 모든 컴퓨터 프로그래머를 위해 융통성 C는 이식성(portability)이 매우 좋은 언어 다양한 운영체제, 다양한 하드웨어
C++ 향상된 C C + Class C의 효율성 + 객체지향개념(object-oriented)
절차지향과 객체지향 객체지향의 배경 객체지향과 절차지향의 비교 소프트웨어 모듈의 재사용과 독립성을 강조 절차지향 (Procedural-Oriented) : 데이터 구조와 그 데이터를 변화시키는 procedure/function으로 구성 객체지향 (Object-Oriented) : 객체들이 메시지(message)를 통하여 통신함으로써 원하는 결과를 얻는다. 각 객체는 고유의 속성(attribute)와 데이터를 처리할 수 있는 메소드(method)로 구성
절차지향과 객체지향 비구조적 구조적/절차지향 객체지향
객체 객체(Object) 효율적으로 정보를 관리하기 위하여, 사람들이 의미를 부여하고 분류하는 논리적인(개념적인) 단위 실 세계에 존재하는 하나의 단위에 대한 소프트웨어적 표현 관련된 변수와 함수의 묶음 객체의 구성 속성의 값을 나타내는 데이터(data) - attribute 데이터를 변경하거나 조작하는 기능(function) – method
객체지향 프로그래밍의 특징 캡슐화 (encapsulation) 다형성 (polymorphism) 상속 (inheritance)
캡슐화(encapsulation) 데이터와 함수를 묶음 데이터 은폐(information hiding)를 지원
캡슐화(encapsulation) 캡슐화는 데이터와 그것을 조작하는 코드를 같이 묶는 구조 객체 안에서 코드와 데이터는 비공개(private)될 수도 있고, 공개(public)될 수도 있다. 외부의 간섭과 오용을 막을 수 있음.
캡슐화(encapsulation) 캡슐화는 데이터와 그것을 조작하는 코드를 같이 묶는 구조 객체 안에서 코드와 데이터는 비공개(private)될 수도 있고, 공개(public)될 수도 있다. 외부의 간섭과 오용을 막을 수 있음.
다형성(polymorphism) 여러 타입을 다룰 수 있는 특성
다형성(polymorphism) 하나의 이름으로 여러 동작들을 지정 Examples: 하나의 함수명, 다양한 목적 자료형에 의해서 동작 결정. Examples: C : abs()-정수, labs()-배정도 정수, fabs()-실수 C++: abs()-정수, 배정도 정수, 실수 하나의 함수명, 다양한 목적 함수 중복(function overloading). 다형성의 이점 비슷한 동작 부류들을 같은 인터페이스로 지정되는 것을 허용, 복잡성을 줄여 줌.
상속(inheritance) 기존 데이터타입의 특성을 간직하면서도 특화된 타입을 만들어 내는 기법
상속(inheritance) 다른 객체의 특성을 이어 받아 새로운 개체를 생성 일반적인 성질 자신만의 특징들을 추가 계층적인 클래스화(hierarchical classification) Parent Class Child Class 객체가 속한 클래스와 객체 고유의 성질을 함께 정의 가능. 코드의 재사용성 증가!
요약 강의소개 C/C++ or C++ 절차지향 언어로서의 C 객체지향 언어로서의 C++ Encapsulation Polymorphism Inheritance