<2022년 01월 25일 _ 패스트캠퍼스 챌린지 02일차>
[스프링 입문_객체지향의 4대 특성]
[1] 캡슐화
1. 캡슐화
: 객체의 속성Variable을 보호하기 위해 사용
2. Method 설계
: 가지고 있는 속성에 대해서는 해당 상태를 변경하는 기능Method를 제공해야 함
: 실물 객체가 가진 기능을 모두 제공해야 함 : 차량의 렌탈, 반납, 주행거리 계산 등
: 각각의 Method는 서로 관련성이 있어야 함
: 객체 안의 Method는 객체 안의 속성을 처리해야 함, 다른 객체를 전달 받아 해당 다른 객체에 정의 된 속성을 직접 처리하면 안됨
: Method 실행에 필요한 값들은 객체 형태가 아닌 매개변수의 형태로 전달되어야 함
3. Method의 종류
: 반드시 다음중 1개 이상에 속한다.
(1) Getter / Setter메소드
: 외부에서 내부속성Variable에 직접 접근하는 것이 아닌 Getter/Setter메소드를 통해 접근하도록 적용
(2) CRUD 메소드
: 데이터 처리를 위한 기본적인 CRUD 메소드 제공
(3) Business Logic 메소드
: 비즈니스 로직 처리를 위한 메소드 제공
(4) 객체의 생명 주기 처리 메소드
: 흔히 destroy(), disconnect(), quit() 등 소멸에 대한 메소드
(5) 객체의 영구성 관리 메소드
: 영구성(유효성) 속성에 대한 변경이 필요할 시 외부 접근 불가한 private로 선언(내부 메소드들은 접근 가능해 사용함)
5. 캡슐화의 장점
(1) 객체지향의 패러다임중 하나인 추상화 제공
: 메소드가 실제로 어떻게 동작하는지 외부에서 이해할 필요/이유가 없음
: 단순 호출만으로 기능 실행, 객체 단위 프로그램 설계 가능
(2) 재 사용성 향상
: 한 객체에 관련된 속성과 Method 모두 캡슐화의 형태로 제공 --> 모듈성,응집도,재사용성 향상
(3) 유지보수 효율성 향상
(4) 무결성
: 주로 변수는 private로 선언하고 Method를 public으로 선언하는 형태가 많음(무결성)
--> Getter/Setter를 제외한 public Method는 입력된 매개변수의 Validation 후 값의 유효성을 가져야만 한다
[2] 상속
1. 상속
: 객체지향에서의 상속은, 속성의 상속이 아닌, 하위로 내려갈 수록 구체화 되는 것
유닛 : name, speed, defence, Move(), Attack()
- 지상 유닛 : isFly = false
- 저글링 : 2마리 생산
- 탱크 : 탱크 모드
- 공중 유닛 : isFly = true
- 정찰기 : 투명 모드
- 수송기 : 3단 공격
2. 상속의 효과
(1) 프로그램 구조 이해도 향상
: 최상위 클래스의 구조로 하위 클래스의 동작 이해 가능
(2) 재사용성 향상
: 상속을 이용해, 해당 클래스에 필요한 속성 및 메소드를 모두 정의 하지 않아도 상속해 사용 가능
(3) 확장성 향상
: 일관된 형태의 클래스 객체를 추가해, 간단하게 프로그램 확장이 가능함 ex) 신규 유닛
(4) 유지보수성 향상
: 각 객체마다, 자신의 메소드를 정의하고 있다면, 코드 수정에서 많은 작업이 필요하지만, 상속을 사용할 경우 일관된 형태로 작성 가능
[3] 다형성
1. 다형성
: 하나의 개체가 여러개의 형태로 변화하는 것
: 오버라이딩을 통해 가능
유닛 : name, speed, defence, Move(), Attack()
- 지상 유닛 : isFly = false : Move() 벽충돌 오버라이딩
- 저글링 : 2마리 생산 : Move() if 발업업글 여부 speed + 3;
Defence = 3, Speed = 10
- 탱크 : 탱크 모드 : Move() if 탱크모드 speed = 0;
Defence =10, Speed = 0
- 공중 유닛 : isFly = true : Move() 벽통과 오버라이딩
- 정찰기 : 투명 모드 : Move()
Defence = 10, Speed = 10
- 수송기 : 3단 공격 : Move()
Defence = 10, Speed = 10
ex)
Unit 저글링 = new 저글링();
Unit 시즈탱크 = new 시즈탱크();
Unit 레이스 = new 레이스();
Unit 뮤탈 = new 뮤탈();
unitMove(저글링);
unitMove(시즈탱크);
unitMove(레이스);
unitMove(뮤탈);
Private void unitMove(Unit unit){
unit.Move();
}
[4] 추상화
1. 추상화
: 객체지향의 추상화는 모델링
: 공통적인부분, 특정 특성등을 분리해서 재조합
: 앞서 배운 다형성, 상속 모두 추상화에 속함
3일차 강의 완료~
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'개발새발 > Spring' 카테고리의 다른 글
220129_스프링입문_디자인패턴_디자인패턴이란_패스트캠퍼스 챌린지 06일차 (0) | 2022.01.29 |
---|---|
220128_스프링입문_객체지향_POJO JAVA_패스트캠퍼스 챌린지 05일차 (0) | 2022.01.28 |
220127_스프링입문_객체지향_객체지향 설계 5원칙 SOLID_패스트캠퍼스 챌린지 04일차 (0) | 2022.01.27 |
220125_스프링입문_객체지향_객체지향이란_패스트캠퍼스 챌린지 02일차 (0) | 2022.01.25 |
220124_스프링입문_객체지향_개발환경설치_패스트캠퍼스 챌린지 01일차 (0) | 2022.01.24 |