개발새발/Spring

220126_스프링입문_객체지향_객체지향 4대 특성_패스트캠퍼스 챌린지 03일차

막동이아빠 2022. 1. 26. 23:54

<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일차 강의 완료~

필기 & 내 화면 스크린샷 저장

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.