*** NOTE: 배우면서 적은 내용이라 잘못된 정보를 포함하고 있을 수도 있습니다 ***
- 강의내용 정리 -
C에서는 struct를 배웠다.
그렇지만 C++에서는 class를 주로 사용할 것이다.
struct와 class의 차이? struct는 public이 기본값이고, class는 private이 기본 값이다.
* Note: C에서는 struct Car myCar; 라 썼다면,
C++에서는 struct를 앞에 안 써줘도 된다. Car myCar; 이렇게만 써도 된다는 거다.
class와 object의 차이
클래스는 Car이고, 객체는 myCar다.
클래스는 Student이고, 객체는 summer다.
클래스는 Dog고, 객체는 cherry다.
멤버변수와 멤버함수(속성과 메소드)
C++에서는 클래스의 member variable라하고,
OO에서는 속성 또는 데이터라고 한다.
'속성 (attribute / data)'이라 부르는게 제일 좋다
전역 함수 global function move()를 생각해보자.
read하라고 했을 때, who is the owner of read()?
-> 아무데도 속하지 않는다. 그래서 함수들을 클래스 안에 넣어줘야한다.
그래서 move()를 Car클래스 안에 넣어주는 거다.
만약, move()가 Motorcycle 클래스 안에 있다면, 멤버 함수 이름은 같지만, 다르게 동작하겠지!
* Note: Car 클래스 안에 drive() 멤버함수를 넣는 사람들이 있는데, 생각해보자. drive()는 사람이 하는거다.
그래서 들어갈 수 있는 메소드는 move(), stop() 등이 있을 것이다.
C++에서는 member functioin라고 하고, 객체가 뭘 하는지를 나타낸다
OO에서는 메소드 또는 behavior 행동? 이라 한다.
제일 좋은 건 '메소드 (method / behavior)'라 부르는 것이다.
1. Encapsulation 캡슐화
packing the data and behaviour together
데이터와 메소드를 함께 묶는 것이다.
-> 이렇게 함으로써 객체 안에 있는 데이터를 외부로부터 보호한다.
2. Polymorphism 다형성
doing the same action in different ways.
다른 방법으로 같은 행동을 하는 것을 말한다. (같은 행동을 하라고 했지만, 다른 종류의 객체가 각각 다른 방법으로 동작하는 것)
예: move()
Car car;
car.move();
Motorcycle motorcycle;
motorcycle.move();
하나의 객체가 다른 여러 객체로 재구성되는 것을 말한다.
오버로딩과 오버라이딩을 생각하자.
overloading: 메소드의 중복 정의
동일한 메소드가 한 개의 클래스에서 중복해서 정의되어 있는 경우.
overriding: 메서드의 재정의
부모 클래스에서 정의한 메소드를 자식 클래스에서 상속 받을 때,
부모 클래스의 정의를 전부 무시하고 다시 재정의해서 사용하는 것!
3. Inheritance 상속
reuse the design of a class
클래스의 설계를 재사용 하는 것
부모 클래스의 모든 것을 자식 클래스가 이어 받는 것을 상속이라 한다. (코드 중복 방지)
속성과 메소드를 상속받으면서, 다른 속성과 메소드를 추가할 수 있다.