윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본.

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

노인복지론 담당교수 : 최 병태 교수님 학과 : 보건복지경영학과 학번 : 이름 : 김 태인 날짜 :
선진한국, 이렇게 만들자 재단법인 한국선진화포럼. 민생이 보는 선진화  윤택한 경제생활 ( 산업화 )  믿고 사는 사회생활 ( 민주화 ) - 개인의 재산, 자유와 권리를 보호하는 사회 모르는 사람과 믿고 협력하는 사회  함께 가는 공동생활 ( 복지사회 ) - 역경에.
제 11 장 구조체.
명품 C++ 프로그래밍 3장. 클래스와 객체.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
미국경제의 신용위기가 한국경제에 미치는 영향
C++ Espresso 제1장 기초 사항.
2004년 예비신자 오리엔테이션 2004년 3월 13일 (토) 오후 8시 천주교 수원교구 상촌성당 [티없이 깨끗하신 성모성심]
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
C++ Exspresso 제5장 클래스의 기초.
8. 객체와 클래스 (기본).
[INA470] Java Programming Youn-Hee Han
2장. UML 기본 개념.
자바 5.0 프로그래밍.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
6. 기본 클래스 프로그래밍 6 컴퓨터공학과 신동일.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
7장 클래스.
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
2010학년도 2학기 객체지향의 이해.
C++ Programming: Sample Programs
DataScience Lab. 박사과정 김희찬 (월)
C ++ 프로그래밍 시작.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 08. 상속과 다형성.
This, static, final 지정 예약어 자바 4대 중첩 클래스
C++ 개요 객체지향 윈도우즈 프로그래밍 한국성서대학교 유일선
Work Progress ’ 나소라, 윤민.
제1장 서론.
명품 C++ 프로그래밍 1장. C++ 시작.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Chapter 3 클래스. 최호성.
DataScience Lab. 박사과정 김희찬 (월)
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
마을살이 제천덕산면을 중심으로 농촌공동체연구소장 한석주.
소프트웨어 공학 (Software Engineering)
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
국제의료관광 관련 법, 제도.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Java Chapter 4 ~ 주차.
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
프로그래머를 위한 첫걸음 JDBC Lecture 001 BY MINIO
Lecture 8 복잡한 구조 프로그래밍 프로그램 짤 때의 마음가짐 invariant 데이터 구성 list pair
3장. 클래스의 기본.
7강. 객체지향 프로그램의 본질 메소드 프로그래밍의 한계 객체의 개념 및 클래스의 이해
A Basic of C++.
남아메리카 선교 김수정, 이하정 전희진, 장성경.
3장,4장 발표 서정우.
자바 5.0 프로그래밍.
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
C# 10장. 참조형.
6장 클래스(상속).
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
2015년 2학년 1반.
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
제 14 장 응용 계층과 클라이언트-서버 모델 클라이언트-서버 모델 14.2 동시성 14.3 프로세스 14.4 요약.
컴퓨터 계측 및 실습 C++ 기초 영남대학교 기계공학부.
새로운 타입 정의하기 Defining new types
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
18장 표현식 템플릿 Ver 2.01.
Chapter 14. 템플릿(Template) 2
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
C# 09장. 클래스와 객체.
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
C++ 언어의 특징
발 표 자 : 7조 손 창 국 윤 오 성, 박 진 완 객체 지향 프로그래밍 C++
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
Presentation transcript:

윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본

윤성우의 열혈 C++ 프로그래밍 Chapter 03-1. C++에서의 구조체 윤성우 저 열혈강의 C++ 프로그래밍 개정판

C++에서의 구조체 윤성우의 열혈 C++ 프로그래밍 구조체의 등장배경 연관 있는 데이터를 하나로 묶으면 프로그램의 구현 및 관리가 용이하다. 구조체는 연관 있는 데이터를 하나로 묶는 문법적 장치이다. 구조체의 등장배경 연관 있는 데이터들은 생성 및 소멸의 시점이 일치하고, 이동 및 전달의 시점 및 방법이 일치하기 때문에 하나의 자료형으로 묶어서 관리하는 것이 용이하다.

C++에서의 구조체 변수 선언 윤성우의 열혈 C++ 프로그래밍 따라서 C++에서는 구조체 변수 선언시 struct 키워드의 생략을 위한 typedef 선언이 불필요하다. C 스타일 구조체 변수 초기화 C++ 스타일 구조체 변수 초기화 Car와 관련된 연관된 데이터들의 모임 Car와 관련된 연관된 함수들의 모임 데이터 뿐만 아니라, 해당 데이터와 연관된 함수들도 함께 그룹을 형성하기 때문에 함수도 하나로 묶는 것에 대해 나름의 가치를 부여할 수 있다.

구조체 안에 함수 삽입하기 윤성우의 열혈 C++ 프로그래밍 C++에서는 구조체 안에 함수를 삽입하는 것이 가능하다. 따라서 C++에서는 구조체가 아닌, 클래스라 한다. 함께 선언된 변수에는 직접 접근이 가능하다.

C++에서의 구조체 변수 선언 윤성우의 열혈 C++ 프로그래밍 변수의 생성 실제로는 구조체 변수마다 함수가 독립적으로 존재하는 구조는 아니다. 그러나 논리적으로는 독립적으로 존재하는 형태로 보아도 문제가 없으니, 위의 그림의 형태로 변수(객체)를 이해하자!

구조체 안에 enum 상수의 선언 윤성우의 열혈 C++ 프로그래밍 Car 클래스를 위해 정의된 상수! 이렇듯 연관 있는 상수들을 하나의 이름공간에 별도로 묶기도 한다! 이렇듯 구조체 안에 enum 선언을 둠으로써 잘못된 외부의 접근을 제한할 수 있다.

함수는 외부로 뺄 수 있다. 윤성우의 열혈 C++ 프로그래밍 구조체 안에 삽입된 함수의 선언! 구조체 안에 선언된 함수의 정의! 구조체 안에 정의된 함수는 inline 선언된 것으로 간주한다. 따라서 필요하다면,함수의 정의를 외부로 뺄 때에는 다음과 같이 명시적으로 inline 선언을 해야 한다.

Chapter 03-2. 클래스(Class)와 객체(Object) 윤성우의 열혈 C++ 프로그래밍 Chapter 03-2. 클래스(Class)와 객체(Object) 윤성우 저 열혈강의 C++ 프로그래밍 개정판

클래스와 구조체의 유일한 차이점 윤성우의 열혈 C++ 프로그래밍 왼쪽과 같이 단순히 키워드만 class로 바꾸면 선언된 멤버의 접근이 불가능하다. 따라서 별도의 접근제어와 관련된 선언을 추가해야 한다. 키워드 struct를 대신해서 class를 사용한것이 유일한 외형적 차이점이다.

접근제어 지시자 윤성우의 열혈 C++ 프로그래밍 접근제어 지시자 public 어디서든 접근허용 protected 상속관계에 놓여있을 때, 유도 클래스에서의 접근허용 private 클래스 내(클래스 내에 정의된 함수)에서만 접근허용 접근제어 지시자 private! public! Car의 멤버함수는 모두 public이므로 클래스의 외부에 해당하는 main 함수에서 접근가능!

용어정리: 객체(Object), 멤버변수, 멤버함수 윤성우의 열혈 C++ 프로그래밍 왼쪽의 Car 클래스를 대상으로 생성된 변수를 가리켜 ‘객체’라 한다. 왼쪽의 Car 클래스 내에 선언된 변수를 가리켜 ‘멤버변수’라 한다. 왼쪽의 Car 클래스 내에 정의된 함수를 가리켜 ‘멤버함수’라 한다.

C++에서의 파일 분할 윤성우의 열혈 C++ 프로그래밍 클래스의 선언은 일반적으로 헤더파일에 삽입한다. 객체생성문 및 멤버의 접근문장을 컴파일하기 위해서 필요하다. 클래스의 이름을 때서 Car.h로 헤더파일의 이름정의하기도 한다. 단! 인라인 함수는 컴파일 과정에서 함수의 호출문을 대체해야 하기 때문에 헤더파일에 함께 정의되어야 한다 Car 클래스의 멤버함수의 몸체는 다른 코드의 컴파일 과정에서 필요한 게 아니다. 링크의 과정을 통해서 하나의 바이너리로 구성만 되면 된다. 따라서 cpp 파일에 정의하는 것이 일반적이다. 클래스의 이름을 따서 Car.cpp로 소스파일의 이름을 정의하기도 한다.

Chapter 03-3. 객체지향 프로그래밍의 이해 윤성우의 열혈 C++ 프로그래밍 Chapter 03-3. 객체지향 프로그래밍의 이해 윤성우 저 열혈강의 C++ 프로그래밍 개정판

“나는 과일장수에게 두 개의 사과를 구매했다!” 객체지향 프로그래밍의 이해 윤성우의 열혈 C++ 프로그래밍 사전적 의미 물건 또는 대상 객체지향 프로그래밍 객체 중심의 프로그래밍 객체에 대한 간단한 정의 객체 객체 객체 “나는 과일장수에게 두 개의 사과를 구매했다!” 데이터 행위, 기능 객체지향 프로그래밍에서는 나, 과일장수, 사과라는 객체를 등장시켜서 두 개의 사과 구매라는 행위를 실체화한다. 객체지향 프로그래밍은 현실에 존재하는 사물과 대상, 그리고 그에 따른 행동을 있는 그대로 실체화 시키는 형태의 프로그래밍이다.

객체를 이루는 것은 데이터와 기능입니다. 윤성우의 열혈 C++ 프로그래밍 행위 상태 상태 과일장수 객체의 표현 과일장수의 데이터 표현 과일장수의 행위 표현 이제 남은 것은 데이터와 행위를 한데 묶는 것!

‘과일장수’의 정의와 멤버변수의 상수화 윤성우의 열혈 C++ 프로그래밍 추가 추가 초기화를 위한 추가 과일 값은 변하지 않는다고 가정할 때 APPLE_PRICE는 다음과 같이 선언하는 것이 좋다! const int APPLE_PRICE; 그러나 상수는 선언과 동시에 초기화 되어야 하기 때문에 이는 불가능하다. 물론 클래스를 정의하는 과정에서 선언과 동시에 초기화는 불가능하다. 추가 추가 초기화를 위한 추가 얼마나 파셨어요? 라는 질문과 답변을 위한 함수

‘나(me)’를 표현하는 클래스의 정의와 객체생성 윤성우의 열혈 C++ 프로그래밍 ‘나’의 클래스 정의 상태 행위 일반적인 변수 선언 방식의 객체생성 동적 할당 방식의 객체생성

사과장수 시뮬레이션 완료 윤성우의 열혈 C++ 프로그래밍 아저씨 사과 2000원어치 주세요. 아저씨 오늘 얼마나 파셨어요.. 라는 질문의 대답 너 사과 심부름 하고 나머지 잔돈이 얼마야.. 라는 질문의 대답 FruitBuyer 객체가 FruitSeller 객체의 SaleApples 함수를 호출하고 있다. 그리고 객체지향에서는 이것을 ‘두 객체가 대화하는 것’으로 본다. 따라서 이러한 형태의 함수호출을 가리켜 ‘메시지 전달’이라 한다.

Chapter 03이 끝났습니다. 질문 있으신지요?