intellij에서 구구단을 출력해보았다.
위의 코드를 리팩터링 해보자
'*'를 X로 바꾸려면??
cf. 리팩터링이란? 기능은 건드리지 않고 코드의 구조만 바꾸는 행위
public class MultiplicationTable {
void print() {
print(5);
}
void print(int table) {
print(table, 1, 10);
}
void print(int table, int from, int to) {
for (int i = from; i <= to; i++) {
System.out.printf("%d * %d = %d", table, i, table * i);
}
지금 당장은 모듈을 만들지 말라고 하셨다.
절차적 vs 객체지향
예를 들어 비행기를 타려고 한다.
절차지향적으로 생각햇을땐, 공항에 가서 체크인 창구 찾고 체크인 하고 보안 검사 받고 등등
하지만 객체지향적인 관점에서는 문제와 관련된 다양한 객체들을 중점적으로 본다. => 각각의 객체가 가진 데이터는? 할수잇는 행위는?
객체로는
비행기, 승무원, 탑승객, 공항, 공항 갈때 탈 택시, 연관될 수 있는 사람들이 될 수 있겠다.
=> 현재 가진 문제에 연관된 여러 요소들을 확인하려고 하는것이 객체지향
=> 알아냈으면, 그 데이터 중 내가 사용하고자 하는것은 무엇인가?
airplane
비행기에 해당하는 데이터 : airline, make, type, position
할 수 있는 행위 : takeoff(), 착륙하기, 나아가기
승무원
승무원에 해당하는 데이터 : 이름, 주소
행위 : 인사, 서빙 등
탑승객
데이터 : 이름, 성별, 주소 등
행위 : 택시 타기, 체크인하기, 걷기, 비행기 탑승하기
class Planet {
name, location, distanceFromSun // 데이터
revolve(), rotate() // 액션
}
Planet earth = new Planet();
Planet venus = new Planet();
Class -> 템플릿이다.
Object/instance -> 템플릿의 인스턴스
MemberData/State -> 객체가 내포할 수 있는 데이터
Actions/Methods -> 객체에 호출될 수 있는 메서드
Online Shopping System에서 객체와 각 관련 데이터, 행위가 무엇이 있을지 대략적으로 작성해보자.
고객
데이터 : name, address
행위 : login(), logout(), selectProduct(product);
장바구니
데이터 : items
행위 : add(item), remove(item)
상품
데이터 : name, price, quantityAvailable
행위 : order(), changePrice()