객체지향 패러다임이란 무엇일까?
아직은 이해가 잘 가진 않지만
내가 이해한 바로는 클래스끼리의 상호작용을통해 복잡하게 만들어놓은 식을 다른 클래스에선
한줄로 간편하게 쓸수있게 만드는 것을 뜻하는것 같다.
위 그림에 비유해 보자면
버스라는 클래스에
버스 번호(이름)
버스 요금
버스 수익금
이라는 속성이 있다고 생각해보자
이와 같은 멤버변수들을 만들수 있을것이다
만약에 내가 이 클래스에 승객이 탑승할때마다 버스의 수익금이 늘어나는 메소드를 작성한다면
현재 버스의 money에 버스 요금을 승객이 탑승할때마다 추가하는 시스템으로 코드를 작성할것이다
위 사진과 같이 내가 pay라는 요금이 들어올때마다 수익금이 늘어나는 형식으로 복합대입연산자를 사용해보았다, 요금이 하나 들어올때마다 승객수는 한명씩 늘어나니까 증감연산자 ++를 활용해주고
내가 이 메소드를 활용했을때 객체의 속성값이 달라질뿐 반환하는값은 없으니 void로 반환값을 만들었다
이제 필요한것은 승객이 탈때 이 take라는 메소드를 활용하게끔 다른 클래스에서 새로운 메소드를 만드는것이다.
타는 승객이 학생이라 가정하고 Student 라는 클래스를 만들어보겠다.
우선 학생의 이름이라는 속성과 , 소지금 이라는 속성을 만들어보았다
생성자를 만들어 이 학생이라는 새로운 개체를 만들려면 name과 소지금이 필수요소로 작용하게끔 만들었다
이제는 아까 만들어둔 bus의 take 메소드를 활용하여 학생한명이 버스를 탈떄마다 1500원이라는 돈이
학생의 소지금에서는 빠져나가고 버스의 수익금에선 늘어나게 서로 연동해보겠다.
인수(들어오는값) 에는 Bus클래스를 참조하고 bus라는 가명의 객체를 인수값으로 넣어보았다
bus(가명)의 객체가 Bus클래스에있는 take 메소드에 1500이라는 인수값을 넣도록 설정하고
학새의 소지금(money)에서는 1500원이 빠져나가도록 만들어보았다.
이제는 이 메소드들을 활용할 GoingtoSchool 이라는 클래스를 만들어보자
이 고잉투스쿨에서는 출력값이 있어야하기떄문에 main클래스를 작성하도록하자
우선 Bus라는 클래스에 bus1이라는 객체(인스턴스)를 생성해보자
이제 bus1은 Bus라는 클래스의 멤버변수,메소드를 공유하고있다
그렇다면 학생이 버스를 타는것을 코드로 실행시키려면 어떻게 해야할까?
아까 Student 클래스에 만들어두었던 takeBus라는 메소드를 활용하면 된다
student1이라는 객체에서 takeBus라는 메소드를 활용해 입력값에 bus1을 넣어보자
그러면 자연스럽게 위에있는 takeBus라는 메소드에는 bus1.take(1500)이라는 메소드가 활성화된다
그러면 자연스럽게 bus1.take메소드가 활성화되고
학생의 소지금에서는 1500원이 빠져나가고
버스의 수익금에서는 1500원이 추가되고, 승객수가 1명이 늘어나게된다
이것을 객체지향 패러다임이라고 생각한다.