일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링부트
- 객체지향프로그래밍
- Filter
- Interceptor
- 자바
- aop
- SQL
- 트랜잭션
- 디자인패턴
- java
- http
- 스프링
- network
- response
- Redis
- Spring
- MYSQL
- spring boot
- 스프링 시큐리티
- exception
- 인터셉터
- proxy pattern
- RestControllerAdvice
- OOP
- 관점지향프로그래밍
- request
- aspect
- git
- Spring Security
- mybatis
- Today
- Total
목록OOP (6)
장쫄깃 기술블로그
객체 지향 설계 5원칙 - SOLID 객체 지향 설계의 정수라고 할 수 있는 5원칙이 집대성되었는데, SOLID 원칙이다. SOLID는 각 5가지 원칙의 앞 머리 알파벳을 따서 부르는 이름이다. SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open Closed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존 역전 원칙 SRP(Single Responsibility Principle) : 단일 책임 원칙 어떤 클래스를 변..
다형성(Polymorphism)이란? 다형성이란 프로그램 언어 각 요소들(상수, 변수, 식, 객체, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 또는 여러 형태를 받아들일 수 있는 성질, 상황에 따라 의미를 다르게 부여할 수 있는 특성 등으로 정의를 하기도 한다. 정리하면 다형성이란 하나의 타입에 여러 객체를 대입할 수 있는 성질로 이해하면 될 것이다. 다형성을 활용하면 기능을 확장하거나, 객체를 변경해야할 때 타입 변경 없이 객체 주입만으로 수정이 일어나게 할 수 있다. 또한 상속을 사용한다면 중복되는 코드까지 제거할 수 있으므로 더욱 객체 지향 설계와 가까워질 수 있다. 다형성을 구현하는 방법 다형성을 구현하는 여러 방법 중 대표적으로 알려져있는 오버로딩, 오버라이..
상속(Inheritance)이란? 상속은 객체들 간의 관계를 구축하는 방법이다. 상속은 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것이다. 하위 클래스들에서 사용할 공통된 메소드를 상위 클래스가 제공해주고, 하위 클래스들은 상위 클래스에서 없는 기능을 추가하거나 재정의한다. 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것 상속의 장점 1. 코드를 재사용할 수 있다. 하위 클래스들이 공통으로 사용할 기능을 상위 클래스에 적용하고, 하위 클래스는 필요할 때 기능을 추가하거나 재정의 하면 되기 때문에, 공통 코드를 재사용할 수 있다. public class Bird { public void fly() { System.out.println("푸드덕 푸드덕"); }..
캡슐화(Encapsulation)란? 객체의 속성(data fields)과 행위(methods)를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉한다. 캡슐화는 객체 내부의 속성이나 행위를 외부에서 직접 접근할 수 없게 하는 것이다. 흔히 은닉과 혼동하는 경우가 많은데, 은닉화란 캡슐화를 통해 얻어지는 '실제 구현 내용 일부를 외부에 감추는 효과'이다. 객체의 속성과 행위를 묶으면 응집도가 올라가므로 자율적인 객체가 된다는 장점이 있다. 자율적인 객체가 되면 다른 객체의 영향을 덜 받기 때문에 자신의 상태를 스스로 잘 처리할 수 있게 된다. 그런데 이 상황에서 캡슐화가 이루어지지 않으면 외부에서 내부 속성에 접근하여 사용할 수 있기 때문에 결합도가 높아지고 응집도가 낮아지게 된다. 이렇게 되면 ..
추상화(Abstraction)란? 컴퓨터 과학에서 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려내는 것을 말한다. 추상화는 이처럼 구체적인 사물들 간의 공통점을 취하고 차이점을 버리는 일반화를 사용하거나, 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만드는 것을 말한다. 핵심은 불필요한 코드를 제거하고 중요한 부분을 살려 단순하게 만드는 것이다. 추상화 예제 추상화란 공통적인 부분을 취하고 차이점을 버리는 것이라고 했다. 예를 들어 SuperCar, SnowCar, FastCar가 있다고 하자. public class SuperCar { public void move() { System.out.println("슈퍼하게 달립니다."); } } ..
객체 지향 객체 지향이란 현실 세계의 객체 모델을 바탕으로 프로그램을 구조화하고 개발하는 프로그래밍 기법을 말한다. 전통적인 프로그래밍 언어는 크게 객체 지향 프로그래밍 언어(Object Oriented Programing Language; OOP)와 절차 지향 프로그래밍 언어(Procedure Oriented Programming Language; POP)로 구분된다. 이는 과거 프로그래밍 언어의 구조적 특징에 따른 분류이며, 최근에 널리 쓰이고 있는 프로그래밍 언어들은 기본적으로 객체 지향에 기반을 두고 있다. 자바의 경우 JDK8에서부터 이러한 최신 경향을 반영하기 시작했다. 절차 지향은 순서대로 진행되며 순서가 틀려서는 안되고 어느 한 부분이 오류가 나면 그다음부터 전체적으로 마비가 되는 순차적인..