CS/OOP

클래스(Class) [JAVA]

장그래 2021. 2. 24. 17:51
반응형

클래스 찾기

  • 자바는 단순한 명령문을 실행하려고 해도 무조건 "클래스"를 구현해야 함

좋은 클래스란?

  • 다른 프로그램에서도 사용할 수 있음
  • 확장이 쉬움
  • 고쳐 쓰기 쉬움
  • 일관성과 결합성을 고려해야함
  • 일관성: 클래스는 목적이 있어야 하고 그 목적에 부합해야 함
  • 결합성: 클래스는 다른 클래스에 대한 의존이 적어야 함

일관성

  • 클래스를 구성하는 요소들이 뭉쳐있는 정도 및 연관성을 의미
  • 클래스의 목적을 이룰 수 있도록 관련된 데이터와 그 데이터를 처리하는 함수들만으로 구성
  • 클래스가 어떤 자료(데이터)를 가지곻 있어야 하는지 먼저 생각
  • 그럴 후에 그 자료를 처리하는 코드를 멤버 함수로 구현

결합성

  • 결합은 클래스가 서로 연결되면서 발생
  • 클래스 설계할 때에는 서로간의 결합성이 낮아야함 (loosely coupled) or weakly coupled
  • 결합성을 낮춘다는 것
    • 특정 클래스 내부 코드의 변경이 다른 클래스에 미치는 영향이 적다는 것
    • 클래스를 단순화

캡슐화

  • 클래스의 캡슐화
    • 관련된 데이터들과 그 데이터를 사용하는 함수들을 함께 클래스에 넣는 것
    • 인터페이스를 제공해서 클래스를 사용할 수 있게 함
  • 캡슐화는 단순하게 데이터와 함수들을 묶은 것이 아님
  • 캡슐화의 목적은 사용자가 내부 데이터를 함부로 수정하지 못하도록 만들어서 클래스가 포함하는 데이터의 응집성과 무결성을 보장
  • 또 다른 목적은 내부 동작 방법을 몰라도 사용 가능

접근 제어자 (access specifiers)

출처 - 상명대 객체지향프로그래밍 강의

반응형