inflearn

[인프런] 김영한의 자바 기본 강의 섹션3. 객체지향 프로그래밍 (240105)

hail2y 2024. 1. 6. 03:59

지금 너무너무 졸리지만 이것까지만 하고 올라가야지 내일의 시간을 당겨 사용하는 게 아니길...

 

1/5 섹션3 객체지향 프로그래밍 필기

나는 그동안 c나 파이썬만 가볍게 봤기 때문에 객체지향 언어를 이번에 처음 배운다. 자바 입문 강의를 떼고 기본 강의를 듣는 건데, 자바 예제를 나름 많이 다뤄 오면서 스스로 객체지향 느낌을 받지 못한 것은 맞지만 강사님이 지금까지 봤던 모든 프로그램이 다 절차지향 프로그래밍이라고 하셨을 때 확인사살 받은 것 같아 좀 놀랐다.. 난 아직 자바를 경험도 못한 건가 싶어서..ㅎ 아무튼 처음 느껴보는 객체지향 프로그래밍 개념에 신기해 하면서 들었다- 

 

  • 절차지향 프로그래밍 - 절차, 순서 지향, '어떻게'를 중심으로
  • 객체지향 프로그래밍 - 객체 자체를 어떻게 만들지, 객체 지향, '무엇'을 중심으로

주의해야 할 것은 이 둘이 대치되는 개념이 아니라는 것이다. 객체지향에서도 절차, 순서에 따라 프로그램이 작동된다. 

그리고 치트키 등장!

  • f2  다음 오류로 바로 넘어가기 위해 사용하는 단축키다. 

절차지향 프로그래밍의 한계

클래스를 사용해 관련된 데이터를 하나로 묶고, 또 메서드를 사용해 각각의 기능을 모듈화하기도 했는데, 여기서 더 개선될 수 없을까 하는 물음이 나왔다. 이러한 코드의 한계는 데이터와 기능이 분리되어 있다는 점이다.

ex) 음악 플레이어와 관련된 데이터는 MusicPlayerData에서, 관련된 기능은 MusicPlayerMain3의 각 메서드에서

 

데이터와 기능이 밀접하게 관련되어 있는데 데이터를 변경하는 순간 메서드의 코드도 수정해야 한다.

객체지향 프로그래밍

클래스는 데이터인 멤버변수 뿐 아니라 기능 역할을 하는 메서드도 포함할 수 있다.

  • 속성: 데이터, 멤버변수, 필드
  • 기능: 메서드

클래스 안에서 만드는 메서드는 static 키워드를 사용하지 않는다. 메서드는 객체를 생성해야 호출할 수 있는데 static이 붙으면 객체를 생성하지 않고도 메서드를 호출할 수 있다. 

  • 인스턴스의 메서드 호출 방법은 점을 찍어서 객체에 접근한 후 원하는 메서드를 호출하는 것으로 한다. 
  • 객체는 자신의 메서드를 통해 자신의 멤버 변수에 접근할 수 있다.

세상에 존재하는 사물은 속성과 기능이 존재한다. 그게 클래스 안에서 멤버변수와 메서드로 구현되고 이것이 객체지향 프로그래밍이 된다. 

  • 외부로부터 데이터를 받을 필요가 없을 때 메서드의 매개변수를 다 지워주면 된다. 

객체를 생성하고 메인 메서드에서 관련 데이터와 메서드를 호출하면서 '객체'의 개념을 느끼면서 이해하기!

ex) 라디오 객체 - 볼륨 업 메서드를 호출하면 그 내부가 어떻게 작동하는지는 모르겠지만 실제 라디오 객체처럼 콘트롤 할 수 있다. 실제 내부적으로는 볼륨 업 버튼을 누르면 그 내부에 있는 volume 값에 1을 증가시켜서 작동한다. 

 

클래스 안에 메서드까지 정의하면 메인 메서드에서는 필요한 기능만 호출하면 된다. 필요한 건 클래스에 다 정의되어 있으니까- 그래서 등장한 객체지향 프로그래밍의 장점은,

캡슐화

속성과 기능을 하나로 묶어 필요한 기능을 메서드를 통해 외부에 제공한다.

 

-- 끝--