자바 클래스를 나누는 이유와 PSVM

allnight5·2022년 11월 18일
0

수업

목록 보기
2/2

class Name{
private name;
private Adresss address;
}
class Address{
private String postalCOde;
private String name;
private String detailName;

public String detailFullName(){
	return name+detailName;
}

}
//기본주소 +상세주소
//풀네임 주소
//어째서 하나의 클래스에 다 쓰지 않고 클래스 두 개로 나눠서 쓰느냐

객체는 실세계를 모방하는 것이 아니고 창조하는 것이다

객체지향 설계의 핵심
메시지 : 객체들이 협력하며 목표를 달성해나가는 과정
협력 : 객체들 간의 관계

역할과 책임
밀가루가클래스 있고 틀 클래스 있고 밑에 불클래스가있는데
밀가루가 틀에 들어간다메세지를 보내고 틀이 준비됬으니 들어오라 메시지 답변을 보내고
틀이 불에 불을 틀라고 메시지를 보내고 불이 라았다고 메시지를 보내면서 작동하고
틀이 완성 되었다며 붕어빵을 완성됬다는 메시지를 보내는 것으로 끝나는 것이다.

역할과 책임, 협력(+메시지)
각 객체들은 역할과 책임이 주어진다.

협력 요청 응답

고객 -> 커피 주문 - > Casher

클래스 객체와 객체의 연결을 역할과 책임을 넘기는 것이다
건설 업체가 자신이 하는것보다 다른 업체가 하는 것이 좋으니 그 업체에 하청을 맡기고
건설업체는 일꾼들을 모으면서 작업하는 곳에 하청을 한다.

유저라는 클래스가
주소라는 클래스를 만드는 것보다 주소가 계속 추가되고 달라질 때
유저 클래스를 계속 바꿔주는 것이 맞느냐? 주소라는 클래스를 만들어서 그것을
불러와서 쓰는 것이 좋냐?

Best practice

클래스에 너무 많은 역할을 주면 안된다
(코드가 많으면 안되다 유지보수가 어렵다)
앞으로만 가던거에 뒤로 가기로 바꿀려면 여러 가지를 바꿔줘야 하기 때문이다.
그렇기 때문에 적절한 세분화와 중요하다

psvm이란?

  1. public static void main(String[] args)
    Java 파일을 실행하기 위해서 반드시 필요한 public static void main (psvm)
    1.JVM이 java 파일을 실행할 때, main을 가장 먼저 찾아 들어가야 함
    2.static은 인스턴스 생성과 상관없이 제일 먼저 호출되는 메소드이기 때문에 main은 static이여야 함
    3.public을 써주는 이유는 외부(JVM)에서도 main에 접근이 가능해야 하기 때문
    4.void를 써주는 이유는 main 함수는 return 값이 없기 때문

    5.String[] args는 java 파일을 실행할 때, 외부에서 값을 전달할 수도 있는데 이 때 필요함. 미사용해도 되지만 써주기는 해야됨

    getter/setter은 자주 쓰면 안된다

    내용이 바뀌기 때문이다.

    처음에 final을 쓰는 이유 바뀌지 않는 데이터를 가지고 있어야하며
    지역적으로 쓰다가 나중에 다르게 바꾸기 위해서

메뉴판을 만들 때 메뉴판 안에서 재고를 파악하고 없다면 보여주지 않는다
재고관리 클래스에서 재고가 있다면 Ture를 아니면 False를 보내준다

데이터가 시스템이 꺼지더라도 가지고 있다면 좋겠다 라면(영원히 저장) 데이터 베이스에 저장하는것이고
아니면 시스템을 사용할때에만 데이터를 가지고 있겠다 라면 이렇게한다.

카페 주문하기(카드or돈 결제만 가능, 할인 쿠폰 같은거 배포가 안되어있음(그러니 할인이 없다))
어;; 인터페이스 어캐 만들지 모르겠다;

메인(메뉴판, 카드, 고객을 불러옴)
고객(메뉴판을 볼러 와서 확인하고 메뉴를 직원 에게 카드와 메뉴를 말함)
돈(현재 가지고 있는 돈을 적어둠)
카드(카드가 마이너스 카드인지 체크카드인지 적어둠 마이너스라면 지금
한도까지 얼마인지 체크라면 지금 돈이 얼마나 들어있는지 적어둠)
직원(받은 메뉴의 재고관리를 불러 확인 후 있다면 결제를 불러서
true라면 음료수를 false이라면 카드에 돈이 부족하다고 반환해줌)
재고관리(받은 메뉴의 만들만큼의 재고가 있다면 true를 아니면 false 반환함)
결제(고객의 카드에 메뉴의 비용만큼 돈이 있다면 true를 아니라면 false를 반환함)
메뉴판(적어진 메뉴를 불러온 곳에 보내줌)

profile
공부기록하기

1개의 댓글

comment-user-thumbnail
2022년 11월 18일

코드블럭이 깨지고, 문단정리가 잘 안되있어서 읽기가 힘드네용.
조금만 더 신경써서 정리해주시면 기록을 복습하실때도 좋으실꺼고
튜터들이 피드백 드리는데도 더 도움이 될 것 같아요! :) 수고하셨습니다.

  • 김태선 튜터
답글 달기