반응형
클래스 찾기
- 자바는 단순한 명령문을 실행하려고 해도 무조건 "클래스"를 구현해야 함
좋은 클래스란?
- 다른 프로그램에서도 사용할 수 있음
- 확장이 쉬움
- 고쳐 쓰기 쉬움
- 일관성과 결합성을 고려해야함
- 일관성: 클래스는 목적이 있어야 하고 그 목적에 부합해야 함
- 결합성: 클래스는 다른 클래스에 대한 의존이 적어야 함
일관성
- 클래스를 구성하는 요소들이 뭉쳐있는 정도 및 연관성을 의미
- 클래스의 목적을 이룰 수 있도록 관련된 데이터와 그 데이터를 처리하는 함수들만으로 구성
- 클래스가 어떤 자료(데이터)를 가지곻 있어야 하는지 먼저 생각
- 그럴 후에 그 자료를 처리하는 코드를 멤버 함수로 구현
결합성
- 결합은 클래스가 서로 연결되면서 발생
- 클래스 설계할 때에는 서로간의 결합성이 낮아야함 (loosely coupled) or weakly coupled
- 결합성을 낮춘다는 것
- 특정 클래스 내부 코드의 변경이 다른 클래스에 미치는 영향이 적다는 것
- 클래스를 단순화
캡슐화
- 클래스의 캡슐화
- 관련된 데이터들과 그 데이터를 사용하는 함수들을 함께 클래스에 넣는 것
- 인터페이스를 제공해서 클래스를 사용할 수 있게 함
- 캡슐화는 단순하게 데이터와 함수들을 묶은 것이 아님
- 캡슐화의 목적은 사용자가 내부 데이터를 함부로 수정하지 못하도록 만들어서 클래스가 포함하는 데이터의 응집성과 무결성을 보장
- 또 다른 목적은 내부 동작 방법을 몰라도 사용 가능
접근 제어자 (access specifiers)
출처 - 상명대 객체지향프로그래밍 강의
반응형
'CS > OOP' 카테고리의 다른 글
[OOP] 좋은 객체 지향 설계의 5가지 원칙이란?(SOLID) (0) | 2021.08.13 |
---|---|
상속(inheritance) [JAVA] (0) | 2021.03.15 |
인터페이스(Interface)와 추상 클래스(abstract class) [JAVA] (0) | 2021.03.15 |
클래스들의 관계[JAVA] (0) | 2021.03.06 |