일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자바의 면접
- 백준 2164
- 팩토리 패턴
- 리버스 프록시
- 스프링 빈
- 스프링
- try-catch
- 전략 패턴
- 스프링 싱글톤
- 포워드 프록시
- 참조형 반환타입
- 후위표기식
- @Tranctional
- 싱글톤 패턴
- 백준 1935
- TCP/IP 4계층
- 네트워크
- 옵저버 패턴
- www.naver.com치면 발생하는일
- mvvm패턴
- removeAll
- 팩토리패턴
- 빈 타입 조회
- 쇠막대기
- Class Loader
- SOLID원칙
- 참조형 매개변수
- 기본형 매개변수
- 스프링 컨테이너
- k번째큰수
- Today
- Total
스파이더 웹 개발
객체지향 프로그래밍 OOP(Object Oriented Programming) 본문
객체지향 프로그래밍의 특징인 캡슐화, 추상화, 다형성, 상속을 알아보자
1) 캡슐화
캡슐화의 속성으로는 2가지가 있다.
1. 필드와 메소드를 클래스로 묶는 데이터 캡슐화 이고,
2. 외부에서 객체의 데이터를 변경하는것을 막기위한 은닉화(접근제어자, setter, getter의 사용) 입니다
또한 프로그램을 설계 할때 높은 응집도와 낮은 결합도를 유지해야 요구사항을 변경하기 쉬운데,
캡슐화는 낮은 결합도를 유지할 수 있도록 해주는 객체지향 설계 원리입니다.
결합도 : 어떤 기능을 실행하는 데 다른 클래스나 모듈들에 얼마나 의존적인지를 나타낸다.
응집도 : 클래스나 모듈 안의 요소들이 얼마나 밀접하게 관련되어 있는지를 나타낸다.
2) 상속
자식 클래스가 부모 클래스를 물려받고 기능을 추가하여 확장하는 개념이며,
자식클래스는 부모 클래스의 속성을 물려받아 재사용함으로써 코드 작성에 드는 시간과 비용을 줄이는 효과가 있습니다.
3) 추상화
구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(집합)으로 다루는 것 입니다
4) 다형성
서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 능력입니다
그 예시로는 오버라이딩, 오버로딩이 있습니다.
오버라이딩(Overriding) 은 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 기술이고,
오버로딩(Overloading) 은 이름의 메서드 여러개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술입니다 반환타입과는 무관합니다
OOP의 5대 원칙
SOLID 원칙
SRP(Single responsibility principle) - 단일 책임 원칙
객체는 단 하나의 책임만 가져야 합니다
OCP(Open/closed principle) - 개방-폐쇄 원칙
기존 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 합니다
LSP(Liskov substitution principle) - 리스코프 치환 원칙
자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 합니다
즉, 부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 역할을 하는데 문제가 없어야 한다는 의미입니다.
ISP(Interface segregation principle) - 인터페이스 분리 원칙
인터페이스를 클라이언트에 특화되도록 분리시키라는 설계 원칙입니다
DIP(Dependency inversion principle) - 의존 역전 원칙
클라이언트는 추상화(인터페이스)에 의존해야 하며, 구체화(구현된 클래스)에 의존해선 안된다.
https://devkingdom.tistory.com/m/296
'Java' 카테고리의 다른 글
Java 컴파일 과정 (0) | 2022.07.22 |
---|---|
기본형 매개변수, 참조형 매개변수, 참조형 반환타입 (0) | 2022.07.21 |
JVM 이란? (0) | 2022.07.21 |
Parameter와 Arguement의 차이 (1) | 2022.07.20 |
클래스 변수, 인스턴스 변수, 지역 변수 (0) | 2022.07.20 |