Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스 n번째 원소까지
- 프로그래머스 문자열 정렬하기 (1)
- Til
- 스파르타코딩캠프
- 스페인어
- 프로그래머스 최댓값 만들기(2)
- ruby설치
- 문자열 정렬하기 (1)
- 프로그래머스 주사위 게임1
- array
- 프로그래머스 배열 만들기1
- 스파르타 코딩클럽 내일배움캠프
- 프로그래머스 조건에 맞게 수열 변경하기 3
- Error installing cocoapods
- continue
- 프로그래머스 자동커밋
- 배열 만들기1
- 조건에 맞게 수열 변경하기 3
- Break
- swift
- 프로그래머스 암호 해독
- 주사위 게임1
- n번째 원소까지
- 문자열 붙여서 출력하기
- 객체지향
- 연산자
- 프로그래머스 n의 배수 고르기
- 프로그래머스 문자열 붙여서 출력하기
- cocoapods 설치 오류
- 프로그래머스
Archives
- Today
- Total
dev._.note
[JAVA] 객체지향의 3대 요소 & 5대 원칙 본문
* 3대 요소
1. 캡슐화(Encapsulation) = 정보은닉
캡슐화란?
- 추상화를 통해 정의된 데이터들과 기능을 하나로 묶어 관리하는 기법.
- 클래스의 가장 중요한 목적인 데이터의 접근제한을 원칙으로 하여 클래스 외부에서 데이터의 직접 접근을 막고, 대신 데이터를 처리하는 함수(매소드)을 클래스 내부에 작성하여 데이터에 접근하는 방식.
캡슐화의 원칙
필드 : 클래스의 멤버 변수에 대한 접근권한은 private 을 원칙으로 한다.
메소드 : 클래스의 멤버 변수에 대한 연산처리를 목적으로 하는 메소드를 클래스 내부에 작성하고, 클래스 밖에서 접근할 수 있도록 public 으로 설정한다.
2. 상속(Inheritance) = 재사용 + 확장
클래스 사이에 부모와 자식 클래스가 존재할 수 있다는 뜻.
자식 클래스는 상속받은 부모 클래스의 속성 및 기능을 사용할 수 있다.
3. 다형성(Polymorphism) = 사용편의
하나의 객체가 여러 가지 형태를 가질 수 있는 것.
오버라이딩(Overriding)부모 클래스에 정의되어 있는 메서드를 자식클래스에서 재정의하여 사용하는 것.
오버로딩(Overloading)같은 이름을 가진 메서드를 인자값의 종류나 개수를 다르게 하여 다른 기능을 구현하도록 정의하는 것.
* 5대 원칙(SOLID 원칙)
1. 단일 책임 원칙(Single Responsibility Principle)
모든 클래스는 각각 하나의 책임만 가져야 한다. 즉, 특수한 목적을 수행하도록 만든 클래스는 해당 목적 외에 다른 기능을 수행하면 안된다.
2. 개방-폐쇄 원칙(Open Closed Principle)
클래스는 확장에는 열려있고 수정에는 닫혀있어야 한다. 즉, 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계되어야 한다.
3. 리스코프 치환 원칙(Liskov Substitution Principle)
자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다. 즉, 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야한다.
4. 인터페이스 분리 원칙(Interface Segregation Principle)
한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 하나의 일반적인 인터페이스보다 여러 개의 구체적인 인터페이스가 낫다.
5. 의존 관계 역전 원칙(Dependency Inversion Principle)
의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존해야 한다. 즉, 구체적인 클래스보다는 인터페이스나 추상 클래스와 관계를 맺어야 한다.
'Dev > JAVA' 카테고리의 다른 글
[JAVA] 역정규화 (0) | 2023.03.16 |
---|---|
[JAVA] Jsp 개요 (0) | 2023.03.02 |
[JAVA] 객체지향(Object oriented) (1) | 2023.02.21 |
[JAVA] 중첩 반복문 (0) | 2023.02.20 |
[JAVA] 배열(Array) (0) | 2023.02.19 |