-
JAVA - 객체지향CS/Java 2021. 2. 17. 19:36
객체지향
OOP(Object Oriented Programming) - 객체지향 프로그래밍
- 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
- 장점: 코드 재사용이 용이하고, 유지보수가 쉽다. 클래스 단위로 모듈화하여 대형 프로젝트에 적합하다.
- 단점: 처리속도가 상대적으로 느리고, 객체가 많으면 용량이 커질 수 있다. 설계시 많은 시간과 노력이 필요하다.
객체지향 VS 절차지향
- 절차지향 프로그래밍) 순차적인 처리가 중요하며 컴퓨터 작업 처리 방식과 비슷하여 속도가 빠르다. 데이터를 중심으로 함수를 구현한다.
- 객체지향 프로그래밍) 필요한 객체의 종류와 속성이 중요하며 메소드를 통해서만 객체에 접근할 수 있어 속도가 비교적 느리다. 기능을 중심으로 메소드를 구현한다.
특징
- 추상화: 불필요한 정보 외 중요한 정보만 표현하여 공통의 속성과 기능을 묶어 일반화 하는것이다.
- 캡슐화: 결합도를 낮게 유지하기 위해 외부에서 접근할 필요가 없는 정보를 숨기고 객체간 의존성을 낮춘다.
- 상속: 클래스로부터 속성과 메서드를 물려받는 것을 말한다.
- 다형성: 하나의 변수명, 함수명이 상황에 따라 다르게 해석될 수 있다. 오버라이딩과 오버로딩이 있다.
5가지 SOLID 법칙
- 단일 책임 법칙(Single Responsibility Principle): 각 클래스는 목적을 하나만 가지고 그에 대한 책임을 가져야 한다.
- 개방 폐쇄 법칙(Open Colse Principle): 각 클래스는 클래스에 대한 수정을 폐쇄하고 확장에 대해 개방해야한다.
- 리스코프 치환 법칙(Liskov Substitution Principle): 자식 클래스를 사용할 때 부모 클래스로 치환하여도 문제가 없어야 한다.
- 인터페이스 분리 법칙(Interface Segregation Principle): 클래스는 자신이 사용하지 않는 메소드에 대해 의존하지 않아야 한다.
- 의존성 역전 법칙(Dependency Inversion Principle): 변화하기 쉬운 것에 의존하기 보다는 변화하기 어려운 것에 의존해야 한다.
reference
velog.io/@hygoogi/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EB%AA%A8%EC%9D%8C#java
velog.io/@hygoogi/%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91-%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0#java
'CS > Java' 카테고리의 다른 글
JAVA - 오버로딩, 오버라이딩 (0) 2021.02.18 JAVA - 인터페이스와 추상클래스 (0) 2021.02.18 JAVA - GC (0) 2021.02.18 JAVA - JVM (0) 2021.02.17 JAVA - 접근 제어자 (0) 2021.02.17