1. 성을 만들기 위해서는 인부들이 필요합니다.
2. 그리고 인부들에게 명령을 내릴 사람 또한 필요합니다.
3. 개발자는 성주이고, 인부들에게 내릴 명령을 문서로 작성해 성을 건축해야합니다.
4. 이 명령 문서는 프로그래밍 코드이고, 어떤 지시를 내릴것인가 작성하는것입니다.
5. 여러개의 명령 코드를 작성합니다. ex_나무를 짤라, 시멘트를 만들어 등등
6. 이러다 보면 오류가 나기에 한번에 묶어서 사용을 합니다.
7. 이것이 함수라는 것인데 수학적 함수와는 다른 의미가 됩니다.
8. 이런 함수를 활용하여 깔끔하고 재사용해서 간결하고 효율적인 코드를 작성할 수 있습니다.
9. 이 과정까지는 절차지향 프로그래밍이라고 합니다.
객체지향의 프로그래밍 방식은 이러합니다.
직업(역할) - Class -> 이 역할을 배정받은 인부들을 인스턴스(instance), 객체(Object) 라고 부른다.
속성(상태) - attributr or field
매소드 - 인부의 행동
이런식으로 표현하면 설명하기 쉬울것이다.
개발(성을만들기 전)하기 전에 미리 역할(Class)를 정하고 속성을 정하여 매소드를 선언하고,
시작하는 것이 객체지향 프로그래밍이라고 한다.
캡슐화(Encapsulation)
다른 클래스의 객체가 이 데이터를 읽거나 수정하지 못하도록 되어 있는것.
EX) private
상속(Inheritance)
클래스가 다른 클래스에게 물려줄 수 있는것이 상속이라고 한다.
코드를 보다 효율적으로 사용하고 일일이 수정할 필요가 없기에 사용한다.
EX) overriding
인터페이스(Interface)
서로 완전히 다른 부모에게 속한 클래스도 하나의 카테고리를 묶을 수 있다.
학위나 자격증 같은 존재이다.
예를 들어) 박쥐, 날치 , 비둘기는 각각 종류가 다르지만, 모두 날 수 있기 때문에 날짐승이란 인터페이스를 적용받을 수 있다.
벽돌시공자, 대장장이, 방어무기시공자 등 마차가 있어서 자재들을 나를 수 있다.
여기서 마차운전수 인터페이스를 적용시킨다면 이 직업들의 필수 자격증으로 지정이된다고 생각하면 된다.
그리고 마차운저수 라는 카테고리 안에 포함이 된다.
그러기에 마차운전수가 자재들을 운반하기 위해서는 어떤것의 객체든 동원이 될 수 있다.
어느 것의 객체가 동원되었는가에 따라, 어떻게 자재들이 운반 될지도 달라진다.