[객체 지향 프로그래밍 입문] 객체
절차 지향
절차 지향은 위와 같이 여러 프로시저가 데이터를 공유하는 형태.
절차 지향과 비용
// 인증 API
Account account = findOne(id);
if(accout.getState() == DELETED){
}
// 암호 변경 API
Account account = findOne(id);
if(accout.getState() == DELETED){
}
위와 같은 코드가 있다고 가정.
위 코드에서 요구사항이 변경되어 아래와 같은 코드로 변경.
// 인증 API
Account account = findOne(id);
if(accout.getState() == DELETED ||
account.getBlockCount() > 0){
}
// 암호 변경 API
Account account = findOne(id);
if(accout.getState() == DELETED ||
account.getBlockCount() > 0){
}
여기서 만약 또 한 번 바뀐다면, 코드가 시간이 갈수록 복잡해지고 수정이 어려워진다는 것을 알 수 있다.
// 인증 API
Account account = findOne(id);
if(accout.getState() == DELETED ||
account.getBlockCount() > 0 ||
account.getEmailVerifyStatus() == 0){
}
// 암호 변경 API
Account account = findOne(id);
if(accout.getState() == DELETED ||
account.getBlockCount() > 0
account.getEmailVerifyStatus() == 0){
}
객체 지향
객체 지향에서는 객체의 데이터를 직접적으로 사용하게하지 않음.
객체 내부의 프로시저를 통해 접근하게 함.
객체의 핵심
→ 기능 제공
-
객체는 제공하는 기능으로 정의
-
내부적으로 가진 필드(데이터)로 정의하지 않음
-
예시 : 회원 객체
- 암호 변경 기능
- 차단 여부 확인 기능
-
예시 : 소리 제어 객체
- 소리 크기 증가 기능
- 소리 크기 감소 기능
기능 명세
- 메서드 ( 오퍼레이션 ) 를 이용해서 기능 명세
- 이름, 파라미터, 결과로 구성
public class VolumeController {
public void increase(int inc){
}
public void decrease(int dec){
}
public int volume(){
}
}
public class Member {
public void changePassword(
String curPwd,String newPwd){
}
}
객체와 객체의 연결
- 기능을 사용해서 연결
- 즉, 메서드를 호출하는 것을 통해 서로 연결
VolumeController volCount = new VolumeController();
volCount.increase(4);
volCount.decrease(3);
int currentVol = volCount.volume();
용어 : 메시지
- 객체와 객체의 상호 작용 : 메시지를 주고 받는다고 표현
- 메서드를 호출하는 메시지, 리턴하는 메시지, 익셉션 메시지
객체?
public class Member {
private String name;
private String id;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setId(String id){
this.id = id;
}
public String getId(){
return id;
}
}
위 클래스를 객체라고 할 수 있을까?
객체는 제공하는 기능으로 정의하기 때문에, 위 클래스는 객체라고 부르기 어려움.
그냥 데이터를 저장하는 데이터 클래스
Author And Source
이 문제에 관하여([객체 지향 프로그래밍 입문] 객체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kshired/객체-지향-프로그래밍-입문-객체저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)