일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 비트마스크
- 2019 카카오 공채
- 카카오
- Baekjoon
- 2020 카카오 공채
- 프로그래머스
- 2019 KAKAO BLIND RECRUITMENT
- dfs
- bfs
- 2019 카카오 개발자 겨울 인턴십 코딩테스트
- 2018 카카오
- Java
- 2018 KAKAO BLIND RECRUITMENT 1차
- set
- 알고리즘
- 삼성 SW 역량테스트
- gradle
- map
- 2018 KAKAO BLIND RECRUITMENT
- 삼성 SW 기출문제
- 젠킨스
- CS 스터디
- 2018 카카오 공채
- 카카오 공채
- gcp
- c++
- 백준
- 부스트코스
- 자바
- 2020 KAKAO BLIND RECRUITMENT
Archives
- Today
- Total
아무코딩
[자바] OOP 본문
객체지향 프로그래밍(OOP)
객체지향 프로그래밍(Object Oriented Programming)이란?
OOP는 컴퓨터 프로그램을 "객체"들의 모임으로 파악하고자 하는 프로그래밍의 패러다임 중에 하나이다. 각 객체들은 서로 메시지를 주고 받을 수 있으며 데이터를 처리 할 수있다.
절차 지향
C언어는 절차 지향 프로그래밍 이라고 하며, 쩔차 지향 프로그래밍은 프로세스가 함수 단위로 순서대로 진행되는 것을 말합니다.
객체 지향 프로그래밍의 장점
- 프로그램을 유연하고 변경이 용이하게 만든다.
- 프로그램의 개발과 보수를 간편하게 만든다.
- 직관적인 코드 분석을 가능하게 한다.
위의 장점들을 관통하는 객체 지향 프로그래밍의 중요한 특성은 강한 응집도(Strong Cohesion)과 약한 결합도(Weak Coupling)를 지향한다는 점이다.)
응집도(cohesion) : 프로그램의 한 요소가 해당 기능을 수행하기 위해 얼마만큼의 연관된 책임과 아이디어가 뭉쳐있는지를 나타내는 정도이다. 일반적으로 프로그램의 한 요소가 특정 목적을 위해 밀접하게 연관된 기능들이 무여서 구현되어 있고, 지나치게 많은 일을 하지 않으면 그것을 응집도가 높다고 표현한다. 응집도가 높으면 프로그램을 쉽게 이해할 수 있으므로 유지보수성이 높아진다.
- 응집도가 낮은 클래스의 문제점 :
- 이해하기 힘들다
- 재사용하기 힘들다.
- 유지보수가 힘들다.
- 다른클래스의 변화에 민감하다.
- 응집도가 낮은 클래스의 문제점 :
결합도(coupling) : 소프트웨어 코드의 한 요소가 다른 것과 얼마나 강력하게 연결되어 있는지, 또한 얼마나 의존적인지 나타내는 정도이다. 프로그램의 요소가 결합도가 낮다는 것은 그것이 다른 요소들과 관계를 그다지 맺지 않은 상태를 의미한다.
- 결합도가 높은 클래스의 문제점
- 연관된 다른 클래스가 변경되면 더불어 변경해야 한다.
- 수정하려는 클래스를 이해하기 위해 연관된 다른 클래스를 함께 이해해야 한다.
- 나중에 다른 프로그램에서 클래스를 재사용 하기도 힘들다.
- 결합도가 높은 클래스의 문제점
OOP의 특징
- 추상화
- 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념.
- 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법.
- 캡슐화
- 연관있는 변수와 함수를 클래스로 묶는 작업.
- 정보은닉을 할 수 있다.. 그렇다고 캡슐화 == 정보은닉은 아니다.
- 상속
- 자식 클래스가 부모 클래스의 멤버를 물려받는 것.
- 자식이 부모를 선택해서 물려 받는 것.
- 상속 대상: 부모의 필드와 메소드
- 상속의 효과
- 부모클래스를 재사용해서 자식 클래스를 빨리 개발할 수 있다.
- 반복된 코드의 중복을 줄여준다.
- 유지 보수의 편리성을 제공해 준다. (부모클래스를 한번만 수정함으로써 자식클래스를 수정할 필요가 없음)
- 객체의 다형성을 구현할 수 있다.
- 다형성
- 같은 타입이지만 실행결과가 다양한 객체를 대입(이용) 할 수 있는 성질.
- 부모 타입에는 모든 자식 객체가 대입될 수 있으며 자식 타입은 부모 타입으로 자동 타입변환이 됩니다.
- 인터페이스와 상속은 둘 다 다형성이라는 객체지향 프로그래밍의 특징을 구현하는 방식이다.
Reference
'CS > 자바' 카테고리의 다른 글
[자바] Stream (0) | 2020.05.31 |
---|---|
[자바]익명클래스 (Anonymous Class) (0) | 2020.05.24 |
컬렉션 프레임워크 (0) | 2020.04.23 |
[자바] JVM (0) | 2020.04.18 |
[자바] 가비지 컬렉터 (0) | 2020.04.18 |
Comments