객체지향(OOP)
Object Oriented Programming
오브젝트 = 속성과 행동을 가지고 있는 개체
속성 = 멤버 변수
행동 = 멤버 함수
추상화(Abstraction)
#include "Header.h"
struct person {
int age;
float salary;
int gender;
char name[100];
void work();
void off();
};
int main() {
return 0;
}
설명 하자면
사람에게는 나이, 이름 성별, 봉급 속성이 있고, 출근 퇴근 이라는 함수도 있을수도 있다.
이렇게 속성과 행동을 나누는 것이 Abstraction(추상화)라고 한다.
이것을 쉽게 표현하자면 게임으로 생각해보면 된다.
코드 예시
#include "Header.h"
struct marine {
int hp = 40;
int atk = 6;
float movement = 4.62;
int atkspd = 62;
int def = 0;
int range = 4;
};
int main() {
return 0;
}
(마린은 우리가 아는 스타 마린이 맞다.)
이렇게 필요한 것들만 있는게 속성이다. 이 외에도 마린에게는 나이, 이름 ,가족, 봉급 등 여러가지가 있는데, 이것은 게임내에서 실제로 표현되지 않는다.
실제로 게임에서 표현되는 것은, 체력, 공속, 방어력, 사정거리 정도만 보인다.
이렇게 필요한 것들만 보이게 하는것이 추상화(Abstraction)라고 한다.
다른 예시로 들자면
만약 회사에 ERP(회사 업무 관리 시스템)을 만든다고 생각해보자.
이 회사원에게는 나이, 봉급, 이름, 3대 몇치는가, 주민번호, 전화번호, 직급, sns아이디, 유튜브 구독자 목록, 집은 원룸인지 투룸인지, 등 여러가지가 있을 것이다.
그런데 저 전부가 ERP 시스템에 다 필요할까?
3대 몇치는가, sns아이디, 유튜브 구독자 목록, 원룸 투룸인지는 ERP시스템에 필요가 없다.
쉽게 말하자면 우리가 만들 프로그램에서 필요한 속성들만 가져오는 것
상속(Inheritance)
상속을 하는 개체의 속성을, 상속을 받는 개체에게 그대로 물려받는다
만약 질럿과 드라군 이라는 개체가 있다. 이 두 개체의 공통점은 프로토스 유닛이라는 점이다.
프로토스 유닛의 특징은 보호막이 있다는 것ㅇㄴ데, "둘 다 보호막 관련된 변수를 넣기엔 귀찮으니 한꺼번에 넣어서 관리하자." 에서 나온게 상속이다.
예시 코드
#include "Header.h"
struct zealot {
int shiledAmount = 50;
int shiledReagen = 2;
int shiledAmmor = 0;
int hp = 0;
};
struct dragoon {
int shiledAmount = 80;
int shiledReagen = 2;
int shiledAmmor = 0;
int hp = 100;
};
int main() {
return 0;
}
이렇게 있다고 가정을 하자. 여기서
int shiledAmount
int shiledReagen
int shiledAmmor
int hp = 100;
이 4개를 묶어주자 라는 것이 상속이다.
예시 코드
#include "Header.h"
struct protossunit {
int shiledAmount = 0;
int shiledReagen = 2;
int shiledAmmor = 0;
int hp = 0;
};
struct zealot : public protossunit{
zealot() {
hp = 80;
shiledAmount = 60;
}
};
struct dragoon : protossunit{
dragoon(){
hp = 100;
shiledAmmor = 80;
}
};
int main() {
return 0;
}
이렇게 사용하면, 내가 필요한것만 사용할 수 있다는 장점이 있다.
코드들은 아직 몰라도 된다.
그리고 상속에서 파생되는게 다향성이다.
다향성
보면 질럿은 struct zealot : public protossunit 이렇게 되어있는데, 이것은 질럿이 프로토스유닛 에게 상속을 받고 있는 것이다.
질럿은 프로토스의 '부분집합' 이라고 볼 수 있다
쉽게 말하면 이렇다.
'질럿은 프로토스 유닛이다' o
질럿은 프로토스 유닛이 맞다.
'프로토스유닛은 질럿이다' x
질럿 말고 드라군, 케리어, 다크 탬플러 일 수 있다.
요약
추상화(Abstraction): 필요한 속성들만 골라 사용하는것
상속(Inheritance):공통된 부분을 묶어서 사용하자
'C언어 공부' 카테고리의 다른 글
C++ 기초 - 3 소멸자 / 연습문제 (0) | 2025.03.15 |
---|---|
C++ 기초 - 2 클래스 멤버 / 생성자 (0) | 2025.03.15 |
C언어 공부의 자료 출처 (0) | 2025.03.14 |
C++ 기초 - C언어와 C++은 뭐가 다른 걸까 - 내 생각 (0) | 2025.03.14 |
C언어 - 번외편2 추가 개념 정리 (0) | 2025.03.14 |