코드의 재사용성이 높고 유지보수가 용이하다.
package e_oop; //무조건 첫줄은 패키지 (클래스의 위치를 알려줌)
public class SampleClass {//public은 접근제어자 이고 class를 붙히고 SampleClass클래스 이름이다.
public static void main(String[] args) { //main이라는 메서드가 실행되는것
//클래스는 변수와 메서드로 구성할 수 있다.
int local = 10; //지역변수: 메서드 안에서만 사용하는 변수(메서드를 벗어나면 존재하지 않게됨)
}
int field;//전역변수: 클래스 전체 영역에서 사용하는 변수(메서드 밖에서 생성) / 초기화 하지 않아도 기본값으로 초기화됨
- 메서드 : 변수를 가지고 할 일
- 선언 방법 : 리턴타입 메서드명(파라미터) {}
- 파라미터(매개변수) : 실행에 필요한 정보 (일하기 위한 정보, 항상 필요한 것은 아님: 더해야 할 값이 파라미터)
//배열이나 클래스 등 타입만 맞으면 올수 있음
- 리턴타입(반환타입) : 실행 후 돌려줘야하는 결과물(실행결과의 타입을 나를 호출한 곳에 알려주는 것, 항상돌려주는것이 아님)
- 메서드를 작성할때 파라미터와 리턴타입을 잘 생각해야 함
package e_oop;
public class ClassMaker {
//1.전역변수 하나를 선언 및 초기화 해주세요
int x = 0;
//2.리턴타입과 파라미터가 없는 메서드 하나를 만들어주세요
//3.메서드 안에서 전역변수를 출력해 주세요
void a(){
System.out.println(x);
}
//4.전역변수와 동일한 타입의 리턴타입이 있고 파라미터는 없는 메서드 하나들 만들기
//5.메서드 안에서 전역변수 리턴
int b(){
return x;
}
//리턴타입은 없고(void) 파라미터가 있는 메서드 하나 만들기
//메서드 안에서 파라미터 출력
void c(String s){
System.out.println(s);
}
//int 타입의 리턴타입과 int타입의 파라미터 두개가 있는 메서드 하나를 만들기
//메서드 안에서 두 파라미터를 곱한 결과 리턴
int d(int x, int y){
return x * y;
}
}
package e_oop;
public class SampleClass {
public static void main(String[] args) {
int local = 10;
}
int field;
String method1(int parameter){
return parameter + " 를 받아 명령을 수행하고 결과물을 리턴하는 메서드";
//문자가 숫자(parameter)와 결합했지만 문자열(리턴타입:String)로 결과값이 나옴
//return: 값을 돌려주고 메서드를 종료시키는 역할이다.
void method2(){
//void는 비어있음을 의미 즉 리턴이 없는것 + 파라미터도 비어있음: 아무런값을 받지 않음
System.out.println("파라미터도 리턴타입도 없는 메서드")
return;
//void인 메서드의 리턴은 값을 넘겨주는 역할이 아니라 메서드를 종료시키는 역만 함
}
SampleClass sc = new SampleClass();
// 리모콘(참조변수): sc / tv(객체 생성): new SampleClass()
// SampleClass를 메모리에 올리겠다. SampleClass 메모리의 주소가 sc에 올라감
System.out.println(sc.field); //주소를 가져와 변수를 출력(결과값 0)
String returnValue = sc.method1(10);
// String 타입의 값을 돌려받기 위한 변수 생성
// 10이 메서드로 들어가 값을 가져와서 변수에 저장됨
// returnValue는 여기서 생성하면서 만든것
System.out.println(returnValue);
sc.method2(); //호출만 해주면됨 값을 넘기지도 받지도 못함
package e_oop;
public class SampleClass {
public static void main(String[] args) {
int local = 10;
}
int field;
void flowTest1(){ //1번은 3번 호출
System.out.println("flowTest1 시작 : 1");
flowTest3(); //3을 호출하면 3으로 이동
System.out.println("flowTest1 종료 : 6");
}
void flowTest2(){
System.out.println("flowTest2 시작 : 3");
System.out.println("flowTest2 종료 : 4");
} //종료후 호출했던 곳으로 이동하여 실행
void flowTest3(){ //3번은 1번 호출
System.out.println("flowTest3 시작 : 2");
flowTest2(); //2을 호출하면 2으로 이동
System.out.println("flowTest3 종료 : 5");
}
}
sc.flowTest1();
//1만 출력해도 모두 출력되게 메서드가 짜여짐
//리모콘(참조변수): sc
package e_oop;
public class Calculator {
// +, -, *, /, %의 메서드로 만들어야함
// 파라미터와 리턴타입은 뭘로?
// 계산을 하려면 2개의 값이 필요 - 파라미터 2개
// 계산을 시킨사람이 결과를 알려면 return필요
double plus(double x,double y){
return x + y;
}
double minus(double x,double y){
return x - y;
}
double muti(double x,double y){
return x * y;
}
double div(double x,double y){
return x / y;
}
double rest(double x,double y){
return x % y;
}
다음을 한줄씩 계산해서 최종 결과값을 출력해주세요
1. 123456 + 654321
2. 1번의 결과값 * 123456
3. 2번의 결과값 / 123456
4. 3번의 결과값 - 654321
5. 4번의 결과값 % 123456
Calculator calculator = new Calculator();
// 리모콘:(참조변수) calculator / tv(객체 생성): new Calculator()
double result = calculator.plus(123456,654321); //계산해서 변수에 담기
result = calculator.muti(result,123456);
result = calculator.div(result,123456);
result = calculator.minus(result,654321);
result = calculator.rest(result,123456);
System.out.println(result);
package e_oop.restaurant;
public class Alba {
//메서드 생성 :알바가 할 일(보스가 알바에게 시킨일)-주문, 서빙, 계산
//파라미터: 일을 하기 위해 필요한 것(보스가 알바에게 주는 것)
//리턴타입: 일을 하고 난 후 돌려주는 것(알바가 보스에게 주는것)
//주문받기 위해 필요한 것은? 없음 - 파라미터 없음
//주문받은 후 보스에게 줄 것은? 주문서 - 리턴타입
String[] order() {
System.out.println("주문 하시겠습니까?");
return new String[]{"짜장면","탕수육"};//주문서
}
//서빙하기위해 필요한 것은? 음식 - 파라미터
//서빙 후 보스에게 줄 것은? 없음 - 리턴타입
void serve(String[] foods){
System.out.println("맛있게 드세요.");
}
//계산하기 위해 필요한 것은? 주문서
//계산 후 보스에게 줄 것은? 없음
void pay(String[] order){
System.out.println("2만원입니다. 안녕히가세요.");
}
}
package e_oop.restaurant;
import java.util.Arrays;
public class Boss {
public static void main(String[] args) {
Alba alba = new Alba();
String[] order = alba.order();
System.out.println(Arrays.toString(order));
System.out.println("요리 만드는중....완성!");
String[] foods = {"완성된 짜장면","완성된 탕수육"};
alba.serve(foods);
alba.pay(order);
}
}