1.28k likes | 1.6k Views
고급객체지향프로그래밍 객체 지향으로 접근하는 C++ 프로그래밍. 경희대학교 정연모. 1. C++ 언어 개요. 경희대학교 이대호. C++ 언어의 특징 (1). C 언어 1970 년대 개발 이식성 (portability) 과 유연성 (flexibility) 절차 지향 언어 (procedure oriented language) C++ 언어 객체 지향 언어 (object oriented language) 클래스 (class) 를 통해서 수행
E N D
고급객체지향프로그래밍객체 지향으로 접근하는 C++ 프로그래밍 경희대학교 정연모
1. C++ 언어 개요 경희대학교 이대호
C++ 언어의 특징(1) • C 언어 • 1970년대 개발 • 이식성(portability)과 유연성(flexibility) • 절차 지향 언어(procedure oriented language) • C++ 언어 • 객체 지향 언어(object oriented language) • 클래스(class)를 통해서 수행 • 1989년 이후 ANSI와 ISO에 의해 C와 C++ 표준화
C++ 언어의 특징(2) • 객체 지행 프로그래밍 • 캡슐화(encapsulation) • 자료와 자료를 처리하는 함수 등을 묶어서, 사용자가 내부의 구조를 알지 않고도 사용법이나 인터페이스만을 알고 사용할 수 있도록 하는 것 • 정보 은닉(information hiding) • 상속(inheritance) • 기존에 작성한 클래스를 이용하여 새로운 형식의 클래스를 파생하는 것 • 다형성(polymorphism) • 같은 이름으로 상황에 따라서 다른 방법으로 동작하는 것 • 동적 바인딩(dynamic binding)으로 실행 시간에 객체의 특성에 따라서 다른 동작을 처리
프로그램 개발 환경(1) • 명령행 컴파일러(command line compiler) • 사용자의 명령어에 의해 실행 코드로 변환 • 통합 개발 환경(IDE, integrated development environment) • 편집기, 컴파일러, 링커와 디버거(debugger) 등을 모두 포함한 프로그램 • Visual Studio 6.0, Visual Studio 2005 등 • Visual Studio • 최신의 서비스 팩(service pack)과 MSDN 라이브러리(Microsoft Developer Network Library)를 설치할 것을 권장
프로그램 개발 환경(3) • Visual Studio 6.0으로 프로그램 작성 • 프로젝트(project) 구성 • 한 개의 프로그램에서 여러 개의 원시 파일들과 기타 관련 자원들을 관리 • 프로젝트 생성 • [File]-[New]
프로그램 개발 환경(5) • 프로젝트에 원시 파일 추가 • [File]-[New] • 컴파일과 실행 • [Build]-[Build xxx.exe] (xxx는 프로젝트 이름)
프로그램 개발 환경(6) • Visual Studio 2005으로 프로그램 작성 • 프로젝트는 솔루션(solution)으로 관리 • 프로젝트 생성 • [파일]-[새로 만들기]-[프로젝트]
프로그램 개발 환경(7) • 프로젝트에 원시 파일 추가 • [프로젝트]-[새 항목 추가] • 컴파일과 실행 • [디버그]-[디버깅하지 않고 시작]
프로그램 개발 환경(8) • 빌드(build) • 컴파일 링킹 실행 파일 생성 • 컴파일 과정에서 오류(error)와 경고(warning)를 출력, 만일 오류가 있으면 링킹할 수 없음 • 링킹 과정에서 오류와 경고를 출력, 만일 오류가 있으면 실행 파일을 생성할 수 없음 • 컴파일은 위에서 아래로 진행하므로 항상 상위에서 발생한 오류를 먼저 수정 • 오류와 경고는 반드시 읽어보고 수정하는 습관이 필요
C++ 프로그램의 일반적인 형식 주석(comment) 컴파일 되지 않는 설명 전처리기(preprocessor) #으로 시작 컴파일하기 전에 먼저 동작 전역 선언(global declaration) 프로그램의 모든 영역에서 사용 가능한 것을 선언 main 함수 반드시 한 개 필요한 함수 사용자 정의 함수(user-defined function) 사용자가 작성한 함수 C++ 프로그램 구조(1)
C++ 프로그램 구조(2) • main 함수 • 프로그램을 실행하면 자동으로 호출(call, 불려서 실행됨)되는 함수 • int main() • 반환(return, 함수가 종료하고 돌려줌)이 정수(int) • 함수 이름이 main • ( ) : 매개변수(parameter)가 없음 • {…} • 함수의 몸체(body), 함수의 동작을 작성 • return 0; • 함수가 종료되면 0을 반환
C++ 프로그램 구조(3) • 아무런 처리도 하지 않는 프로그램 • 주석 • 블록 주석(block comment) • /*로 시작해서 */로 끝남 • 줄 주석(line comment) • //로 시작해서 작성 // 아무런 처리도 하지 않는 프로그램 int main() { return 0; }
C++ 프로그램 구조(4) • #include 전처리기 • 전처리기: 컴파일하기 전에 동작 • include: 컴파일하기 전에 지정된 파일(헤더 파일)을 원시 코드에 포함
C++ 프로그램 구조(6) • 식별어(identifier) • 사용자가 필요에 따라서 선언한 것으로 다른 것과 구분할 수 있는 이름 • 변수, 상수, 함수, 클래스, 구조체 등의 이름 • 식별어의 조건 • 영문자(A-Z, a-z), 숫자(0-9), 밑줄(_)로 구성 • 영문자는 대소문자를 구분 • 식별어의 첫 자는 영문자 또는 밑줄 • 예약어는 사용할 수 없음
자료형(1) • 상수(constant) • 수행되기 전에 자료의 값을 미리 정하여 수행 도중에 값이 변하지 않는 숫자나 문자(문자열) • 리터럴(literal) • 수식에서 표현된 숫자나 문자 그 자체 • 정의된 상수(defined constant) • #define로 지정 • 메모리 상수(memory constant) • 변수를 상수형으로 지정
자료형(2) • 정의된 상수 • 컴파일하기 전에 상수이름을 사용한 곳이 상수값으로 수정
자료형(3) • 변수(variable) • 프로그램 수행 도중에 값이 변할 수 있는 자료 • 변수를 위해 미리 정해 놓은 자료형은 변하지 않음 • 선언 시에 반드시 그 자료형을 지정 • C++의 자료형
자료형(4) • 변수의 선언(declaration) • 자료형의 종류와 지정어
자료형(5) • 메모리 상수 • 참조 변수
자료형(6) • 대입(assignment) • =: 대입 연산자(assignment operator)
자료형(7) • 연산과 자료형 변환 • 묵시적 형변환(implicit type conversion) • 명시적 형변환(explicit type conversion) • C 형식의 형변환
자료형(8) • C++의 형변환
자료형(9) • 표준 입/출력 스트림 • 표준 출력 스트림 • cout 객체와 삽입 연산자(insertion operator, <<)에 의해 수행
자료형(10) • 표준 입력 스트림 • cin 객체와 추출 연산자(extraction operator, >>)에 의해 수행
연산자(1) • 연산자의 종류와 기능 • 연산자(operator) • 피연산자에 대한 덧셈, 뺄셈 등의 연산을 표시하는 기호 • 피연산자(operand) • 연산이 수행되는 대상
연산자(3) • 산술 연산자
연산자(4) • 증감 연산자 • 관계 연산자 • 동등 연산자
연산자(5) • 논리 연산자
연산자(6) • 대입 연산자
연산자(7) • 비트 연산자
연산자(8) • 조건 연산자 • 기타 연산자
제어문(1) • 문장과 제어문 • 문장(statement) • ;으로 구분된 명령어 코드 • 제어문(control statement) • 처리를 구분하거나 반복적인 수행 또는 분기 • 선택문(selection statement) • 반복문(repetition statement) • 분기문(branch statement) • 제어문에서 조건에 의해 수행되는 문장은 기본적으로 하나의 문장만일 여러 문장을 동시에 수행하는 경우에는 {}로 묶어 복합 문장(compound statement)으로 작성
제어문(2) • if문
제어문(3) • switch문
제어문(5) • 선택문과 반복문
제어문(6) • while문 • for문 • do…while문
제어문(7) • break문 • 반복문이나 switch문을 강제로 벗어남 • continue문 • 아래의 반복되는 문장을 처리하지 않고 다시 반복을 수행하게 하는 분기문
제어문(8) • goto문 • 사용자가 지정한 레이블의 위치로 분기 • 레이블은 프로그램의 특정 위치를 지정한 식별어
함수(1) • 함수(function) • main 함수 • 표준 라이브러리 함수(standard library function) • 사용자 정의 함수(user-defined function) • 함수의 형식 • 인수(argument): 함수의 매개변수에 전달되는 값 • 매개변수(parameter): 인수를 받는 값 • 반환형: 함수가 종료될 때 전달되는 값의 자료형
함수(2) • 함수의 정의
함수(3) • 매개변수와 반환값이 없는 함수 • 매개변수가 없으므로 인수 없이 호출 • 반환값이 없으므로 함수 이름 앞에 void를 지정
함수(4) • 매개변수는 있으나 반환값이 없는 함수 • 매개변수를 가지고 있으므로 인수에 따라서 다른 동작을 처리 • 반환값으로 결과를 가져오지 못하므로 매개변수에 의한 단순한 처리(출력 등)를 수행하는 함수로 주로 사용
함수(5) • 매개변수는 없으나 반환값이 있는 함수 • 매개변수가 없으므로 함수에서 수행되는 처리는 동일 • 반환값으로 결과를 가져옴
함수(6) • 매개변수와 반환값이 있는 함수 • 일반적인 형식의 함수