소프트웨어 공학 관점에서 S/W의 질을 향상하는 법
>>> 강한 응집력(Strong Cohesion), 약한 결합력(Weak Coupling) 지향
OOP = 클래스를 사용하여 강한 응집력, 클래스간에 독립적인 설계로 약한 결합력을 지향
객체 지향 프로그래밍의 특징
1. 캡슐화
객체의 속성(데이터 필드)과 행위(메소드)를 하나로 결합
실제 구현 내용 일부를 외부에 은닉 (접근 제어자 public/ protected/ private 로 정보은닉)
접근지정자에 의해 제한된 멤버들은 컴파일러에 의해 판단됨
> 제한된 멤버 접근 시 컴파일 오류, 실행코드 생성 제한
2. 추상화
객체들의 공통된 특징 파악, 정의
> 불필요한 정보는 숨기고 중요한 정보만 표현. 프로그램을 간단히 만드는 것
- 클래스 = 추상 자료형
- 객체 = 추상 자료형의 인스턴스
- 메소드 = 추상 자료형에서 정의된 연산
- 생서자 = 메소드 호출
- 추상클래스 (abstract) : 추상메소드 포함 (미완성 클래스) > 객체 생성 불가능 (Is-a)
- 인터페이스 (interace) : 추상메소드, 상수 포함 > 다중상속 (implements) (has-a)
3. 다형성 (오버라이딩/오버로딩)
같은 형태에 다른 기능 > 코드의 재사용성 증가, 유지보수 용이
- 오버라이딩
- 부모 클래스를 상속받아 자식 클래스에서 부모클래스의 메소드를 재정의
- 오버로딩
- 같은 이름의 메소드의 매개변수의 갯수나 데이터 타입을 다르게 정의
4. 상속성 (재사용)
새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능 > 코드의 중복 최소화
클래스 간의 종속 관계를 형성 > 객체 조직화
동적 바인딩
실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩
프로그램의 한 개체나 기호를 실행 과정에 여러 속성이나 연산에 바인딩함으로써 다형 개념을 실현
정적 바인딩
컴파일 시간에 완료되어 변화하지 않음
Reference
반응형
'Program Language > Java' 카테고리의 다른 글
🧐 JVM, JRE, JDK, GC, JAVA 실행과정, etc... (0) | 2022.07.24 |
---|