C #:객체 지향 프로그래밍과 클래스
================================ Outline ====================================
전날 복습
객체 지향 프로그래밍과 클래스
코딩을 통한 클래스의 이해
학점 관리 프로그램 코딩 - 객체지향적
----------------------------------------------------------------------------
** 전날 복습
- 메소드의 정의
- 매게 변수의 정의
- Swap 메소드를 사용할 때 ‘ref’를 사용하여 참조 값을 전달한다.
- 다수의 반환 값이 발생하는 경우 'out'을 사용하여 처리 한다.
- 메소드 오버로딩의 정의: 함수의 이름은 동일하나 매개 변수의 숫자나 타입이 다른 경우 이를 다형성을 사용하여 이를 지원하는 기능
- 가변길이의 매개 변수는 'params'라는 코드를 사용하여 호출
- 명명된 매개변수는 인자의 이름을 직접 기입후 값을 넣어주는 것
- 선택적 매개변수는 인자의 기본 값을 초기화를 통해 선언해 준 후 값이 다른 경우만 매개 변수를 직접 넣어주는 것
<객체 지향 프로그래밍과 클래스>
객체란 무엇일까?
- 각 각의 기능을 가진 조각들을 객체라고 할 수 있다. 프로그래밍적으로 객체란 프로그램에 사용되는 모든 코드를 지칭한다.
- 코드를 사용할 때 일반적인 특성을 추출하여 보편적으로 적용되는 형식으로 만드는 것을 ‘객체화’라고 할 수 있다.
- 추상화를 통해 실제 객체의 주요 특징만 뽑아 일반화 시키는 능력이 필요하다.
- 레고 블록을 예로 들어 블록으로로 집을 만든다고 할 때 이것을 세부화하여 간단히 네모, 세모, 동그라미로 나눈 후 이것들을 조합하여 집을 짓는 것이다. 이처럼 전체 작업을 세부화하여 정형화하고 차후에 정형화된 조각들을 끌어 모아 재사용하는 것이 객체 지향이 추구하는 방법이다.
- 붕어빵을 예로 들면 붕어빵들은 클래쓰, 붕어빵은 객체
- 만들어진 객체(메모리상에 자리를 차지하는 상태)는 instance라고 부르며, 이는 실체라는 뜻이다. 객체가 실현되어 메모리 상에 올라와 있는 것이 객체가 실현된 상태이다.
- 모든 클래스는 복합 데이터 형식이다. 즉, 기본 데이터 형식을 조합해서 만드는 사용자 정의 데이터 형식.
<코딩을 통한 클래스의 이해>
자동차를 만든다고 가정하고 클래스를 활용한 코딩을 해보자.
using System; |
- 생성자와 소멸자
프로그래머가 명시적으로 생성자를 만들어주지 않을 때 컴파일러가 기본 생성자(default constructor)를 만들어준다. 생성자는 다형성을 지원하기 때문에 매게 변수의 숫자와 타입에 따라 사용자가 생성자를 만들어 사용할 수 있다.
<객체지향적 코딩 - 학점 관리 프로그램>
class STUDENT //데이터 저장소의 역할 |
================================ Outline ====================================
타입 변환
캡슐화
----------------------------------------------------------------------------
C++ p/94 타입 변환
C++의 타입 변환은 다양한 모양을 가지고 있다.
float A = 3; //묵시적 형 변환, 3이 실수 형태로 저장된다.
float A = (float)3; //명시적 형 변환.
p/95 예제: Convert1
#include <iostream> |
변환 생성자는 편의성을 제공하지만 클래스와 일반 타입간의 구분을 모호하게 만들어 버리는 맹점이 있다. 이에 ‘explicit' 키워드를 사용하면 묵시적 형 변환을 막을 수 있다.
변환 환수와 캐스팅에 대해서는 다음에 한다!
p/107 캡슐화
정보의 은닉을 목적으로 데이터를 외부에 공개하지 않는 것을 캡슐화라고 한다.
사용법만 알면 작동 원리를 굳이 알 필요가 없다::몰라도 된다. 또한 사용자가 건들면 프로그램에 손상을 입힐 수 있는 경우도 있다::몰라야 한다.
공개해야 할 것 몇몇을 제외하고는 숨기는 것이 일반적이다.
특히 변수는 사용자가 임의적으로 접근할 수 없도록 캡슐화한다.
** 메모리 주소 값을 이용한 함수가 사용되면 사용자가 메모리로 접근하여 값을 조작할 수 있다.
p/118 CarObject 예제
#include <iostream> |
|
헤더파일이 없어 안된다!!!!!!!!!!!!!!!
a.cpp: In function ‘int main()’:
a.cpp:82:19: error: ‘kbhit’ was not declared in this scope
a.cpp:82:31: error: ‘getch’ was not declared in this scope
a.cpp:85:24: error: ‘getch’ was not declared in this scope
a.cpp:114:13: error: ‘delay’ was not declared in this scope
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20150609 - c++ 파일분활 (0) | 2015.06.09 |
---|---|
20150609 - 27 주보건 콜렉션 - ArrayList - Queue - Indexer (4) | 2015.06.09 |
20150605 - 26번 임현수 배열, default 매개변수, 복사생성자 (5) | 2015.06.07 |
20150603 - 23번 이량경 friend, 정적{this, static)/객체복사, this, 접근한정자, Base, 상속, ISAS,오버라이딩,메소드 숨기기, 중첩분할 클래스, 확장메소드, 구조체 (7) | 2015.06.04 |
20150601 - 21번 우대희 <매개 변수 / 상수멤버 초기화> (3) | 2015.06.01 |
고전 자료(?) ... (4) | 2015.05.28 |
20150528 - 20번 엄민웅 C#, C++(클래스 생성자 소멸자) (8) | 2015.05.28 |
20150527 - 19번 - 안향진 - C#,C++ (6) | 2015.05.28 |