9월 15일 강의 정리 - class method 만들기 기초자바 (짜장면부분빠짐)

개념 정리 먼저 


객체지향 프로그래밍(object oriented programming )  어떤 대상을 기준으로 코드를 작성

프로그래밍을 단순히 코드의 연속으로 보는 것이 아니라 객체간의 상호작용으로 보는것 

코드의 재사용성이 높고 유지보수가 용이하다. 

method : 지금까지는 필요한 모든 코드를 메인 메서드에 넣었는데

긴 코드였던 메인메소드에 있는 것들을 나누겠다. 

장점 : 같은 내용이 반복될 떄 사용하기 쉽다. 

다른 메소드로 분리하면 : 메인메서드에서는 한줄만  입력하면 다른곳에서 메소드를 불러와서 계속 반복해서 사용이 가능하다. 

-> 유지보수가 편리해지는 장점이 있다. 

고쳐야 할때 수정을 10개의 모두에 해야하지만 메서드를 분리해놓았다면 그 부분의 메소드만 수정해놓으면 된다. 

import 는 : 이 클래스 안에서 다른 클래스를 사용할 때 다른 패키지에 있는 애를 가져오는데 그 패키지가 어디에 있는 지 현재 클래스에게 알려주는것. 


-CLASS 를 만들때 cass 예약어 이름을 붙여준다 예약어 이름앞글자는 대문자이다.


- MAIN 메소드가 있는 하나가 하나의 프로그램이었는데 main 메소드가 없는 클래스라는 것은

여기에서 만든 클래스를 다른 main 메소드에서 사용한다는 것. 


우선 main 메소드를 만들어보자. 

package e_oop;


public class SampleClass {


public static void main(String[] args){

int local = 10 ; 

// 지역변수 : 메서드 안에서만 사용하는 변수 

//지역변수는 반드시 초기화를 해줘야 사용할 수 있었어 

}


int field; 

//전역변수 : 클래스 전체 영역에서 사용하는 변수 

//초기화하지 않아도 기본값으로 초기화된다. 


//기본값 

boolean 함수는 false 가 기본값

String  함수는 null이 기본값

나머지는 0 이 기본값 


boolean bool = false; 

String str = null ; 

다른 것들은 0 


method : 변수를 가지고 한일 

선언방법 : 리턴타입 method명 (파라미터) {


-파라미터( 매개변수 ) : 실행에 필요한 정보 

-리턴타입(반환타입) : 실행 후 돌려줘야 하는 결과물 

{method를 바탕으로 클래스 안에서 어떤 일을 할 것인가 }


- method 를 본격적으로 만들어 보자 


void method1 () { 

// void  는 얘가 return 하는 값인 리턴이 없어서 정해지지 않은 거라서 void으로 써준거고 

타입대신 void 타입으로 써준거다 void 나 다른 타입들의 뜻은 돌려주는 리턴타입의 타입을 가리킨다. 

// method1 은 내가 지정한 이름이다. 

// () 안에는 입력해줄 파라미터값이 들어간다

System.out.println("파라미터도 리턴타입도 없는 method " ) ; 

//method1 이라는 애를 다른곳에서 호출을 하면 파라미터도 return 값도 없기에 그 뒤에 있는 괄호 안에 있는 애들이 실행이 된다. 


String method2(int parameter) { 

   return parameter + "를 받아 명령을 수행하고 결과물을 리턴하는 메서드" 


}

//String 이라는 것은 메소드가 다른 곳에서 호출이 되었을때 나오는 결과값이 String 이라는 뜻 


return 뒤에 있는 parameter + "를 받아 명령을 수행하고 결과물을 리턴하는 메서드" 얘는 다른곳에서 method2를 호출하면 결과값인 애들이다 ( 출력 표시 System~ 이 없기 때문에 출력이 되지는 않는다. 


parameter 란 : method를 선언해주는 입장에서는 타입에 맞는(int) 데이터 (parameter) 를

선언해서 그 것만 넣어주세요를 알려주는게 ( int parameter) 

return : method를 종료시키면서, 리턴할 데이터가 있다면 데이터를 돌려줌 

보통은 가장 마지막줄에 위치하게 됨. 

 


이제 클래스를 만들어주었고 이것은 다른곳에 저장되어 있으니까 내가 짜던 코드창으로 돌아가서 위에서 만들어진 애를 사용을 해보는거야 


--> 내가 짜고 있던 코드창으로가서 


객체를 생성해주어야 한다. 

SampleClass sc = new SampleClass() ; 


// sc 는 임의로 만들어진 변수가 되고 이것의 타입이 SampleClass가 되는것이다. ( 이거는 연결된 그 다른 클래스의 이름.)  이렇게 객체를 생성해 주면 연결이 되서 내가 만들었던 class가 지금 main 과 연결이 되서 

사용을 할 수 있게 되는 준비가 된다. 


그것을 확인해보기 위해서 

System.out.prinln(sc.field) ; 를 입력해보면 내가 만든 class 에서의 field 의 변수가 잘 출력이 되는지 알 수 있다. 


값이 위에서 지정한 0이 출력하게 된다. 


sc.method1 () ; 

-> 파라미터도 리턴타입도 없는 메서드라는 내용이 출력됨 

-> 메소드에 있는 내용을 처음부터 끝까지 실행된다.

변수. 만들어진 메소드이름 () -> 이렇게 하면 메소드를 호출할 수 있게 된다. 

sc.method2(5) 

int 타입의 값인 5를 파라미터에 넣었고 얻을 수 잇는 것은 스트링타입의 

String returnValue = sc.method2(5) ; 

System.out.println(returnValue) ; 

출력 : 5를 받아 명령을 수행하고 결과물을 리턴하는 메서드 

System.out.println(sc.method2(10) ) 변수에 담지 않고 그냥 사용하고 싶으면 이렇게 사용하면 됨 넣으면 됨 

-----------------------------------------------------------------------------------------------------다른 예시 하나더 


sc.flowtest1() ; 

방금 만든 클래스의 객체를 생성하고 변수에 저장해주세요

ClassMaker sn = new ClassMaker(); 

// 객체가 저장된 변수를 통해 메서드를 호출해 주세요

sn.method1() ; 


//피라미터가 있는 메서드 타입에 맞는 값을 넘겨주시고

int answer = sn.method2() 

System.out.println(answer) ; 

sn.method3("sk" ) 

//리턴타입이 있는 메서드는 리턴받은 값을 출력해주세요. 


sn.method4(4, 5); 

System.out.println(sn.method4(4, 5) ) ;  







// 선생님이 내준 수업중에 과제 



1. 전역 변수 하나를 선언 및 초기화 해주세요 


int a = 2 ; 


2. 리턴타입과 피라미터가 없는 메서드 하나를 만들어 주세요 

메소드 안에서 전역변수를 출력해주세요 


void method1 () { 

System.out.println(a); 

}


-> return 타입이 없으니까 void 

3. 전역변수와 동일한 타입의 리턴타입이 있고 피라미터는 없는 메소드 하나를 만들어주세요 , 메소드 안에서 전역변수를 리턴해 주세요. 

int method2(){

return a; 

 }


4. 리턴타입은 없고 void 파라미터가 있는 메소드 하나를 만들어주세요 메서드 안에서 피라미터를 출력해주세요 

void method3 (String p ) { 

System.out.println(); ?


5. int 타입의 리턴타입과 int 타입의 피라미터 두개가 있는 메서드 하나를 만들어 주세요 

메서드 안에서 두 파라미터를 곱한 결과를 리턴해 주세요


int method4(int p , int h){

     return p*h ; 

}

}





- 계산기 만들기 




double sum ( double a, double b ) { 

return a + b ; 


double multi ( double a , double b ) { 

return a * b ; 


double divi(double a , double b ) { 

return a / b ; 

}

double min(double a , double b ) { 

return a-b ; 

double remin(double a, double b ) { 

return a % b ; 



---------------------------> 계산기 만든거를 main 메소드에서 사용해보자 


Calculator sm = new Calculator () ; 객체를 만든것 

수정답

double answer1 = sm.sum(123456, 654321); 

System.out.println(answer1); 


double answer2 = sm.multi(answe1, 123456) ; 

System.out.println(answer2); 


double answer3 = sm.divi(answer2, 123456) ; 

System.out.println(answer3) ; 


double answer4 = sm.min(answer3, 654321) ; 

System.out.println(answer4) ; 


double answer5 = sm.remin(answer4, 123456) ; 

System.out.println(answer5) ; 


선생님 답 . 간결함

double result = sm.sum(123456,654321) ; 

result = sm.multi(result , 123456) ; 

result = sm.divi(result, 123456) ; 

result = sm.min(result, 654321) ; 

result = sm.remin(result, 123456) ; 

System.out.println(result) ; 








































// -> oop 로 가서


void flowtest1(){
System.out.println("flowTest 시작 : 1 ");  //1
flowTest3();
System.out.println("flowTest1 종료 : 6 "); //6

}

void flowTest2() {
System.out.println("flowTest2 시작 : 3 " ); //3
System.out.println("flowTest2 종료 : 4 "); //4

}

void flowTest3() {
System.out.println("flowTest3 시작 : 2 "); //2
flowTest2();
System.out.println("flowTest3 종료 : 5 "); //5

댓글