본문 바로가기
개발일지

개발 일지 13일차 - 메서드-

by 태운콩즙 2023. 12. 12.
728x90
반응형

매서드

 

1 해당 클래스가 제공하는 기능을 정의한 코드 블록
2 보통 메서드 하나는 하나의 기능을 수행하도록 함
3 이름은 변수 이름 규칙을 따르며,마음대로 정할 수 있음.
4 매개변,리턴을 가질 수 있음,
 a 매개변수(parameter) = 입력 값

i 해당 메서드를 호출할 때 넘겨줄 데이터

ii 일종의 입력 데이터

iii. 갯수에 제한은 없음

b 리턴 (return) = 출력 값

 i. 해당 메서드가 끝났을 때 호출한 곳으로 넘겨줄 데이터

 ii. 일종의 출력 데이터
 
 iii. 어떤 타입이든 하나만 리턴을 할수 있음 

2 객체 선언 문법

[객체로 선언할 클래스 이름] [객체로 지정할 이름(마음대로)] = new [객체로 선언할 클래스의 생성자];

 

기초 문법

1 매개변수 x 리턴 x

Public void method(){
//메서드가 호출됐을 때 실행할 문장
}

2 매개변수 o 리턴 x 

public void method1([매개변수]){
// 메서드가  호출 됐을때 실행할 문장(매개변수가 활용돼야함)
}

리턴이 없을 떄는 void를 사용 한다

 

3 매개변수 x  리턴 o 

public[리턴타입] method3(){
//메서드가 호출 됐을때 실행할 문장
return[리턴값 또는 리턴 문장];
}

리턴타입과 리턴 값은 반드시 일치 하여야 하고 리턴이 있는 메서드를 호출 할 때는 호출하는 문장에서 반드시 호출 결과를 활용하는 내용이 있어야 한다

매개 변수가 없을경우 void 대신 다른 타입을 넣어준다

 

4 매개변수o 리턴o

public[리턴타입] method4([매개변수]){
//메서드가 호출 됐을때 실행할 문장(매개변수가 활용돼야함)
return[리턴값 또는 리턴 문장];
}

 

<예제1>

계산기

package ch10_class.ex7;

import java.util.Arrays;
import java.util.Scanner;

public class CalculatorMain {
    public static void main(String[] args) {
        /**
         * 실행하면 반복문으로 메뉴를 출력
         * 1.덧셈 2.뺄셈 3.곱셈 4.나눗셈
         * 각 번호를 선택하면 Calculator 클래스에 있는 해당 메서드를 호출하여 결과를 출력함
         */
        Calculator calculator = new Calculator();
        Scanner scanner = new Scanner(System.in);
        boolean run = true;
        while (run){
            System.out.println("1.덧셈 2.뺄셈 3.곱셈 4.나눗셈");
            int button = scanner.nextInt();
            if (button == 1){
               int num1 = scanner.nextInt();
               int num2 = scanner.nextInt();
                calculator.sum(num1 , num2);
            }else if (button == 2){
                int num1 = scanner.nextInt();
                int num2 = scanner.nextInt();
                calculator.sub(num1,num2);
            }else if (button == 3){
                int num1 = scanner.nextInt();
                int num2 = scanner.nextInt();
                int mul = calculator.mul(num1 , num2);
                System.out.println(mul);
            }else if (button == 4){

                System.out.println(calculator.div());
            }
        }
    }
}

위와 같이 while 문 으로 실행 하여 주고

스케너로 수를 입력받으며 실행을 시키는 코드

<메서드>

package ch10_class.ex7;

import java.util.Scanner;

public class Calculator {
    /**
     * 덧셈 메서드
     * method name: sum
     * parameter: int 타입 2개
     * return: x
     * 실행내용
     *  - 매개변수로 전달 받은 2개 값의 합을 출력
     */
    public void sum(int num1 , int num2){
        int sum = num1 + num2;
        System.out.println(sum);
    }

    /**
     * 뺄셈 메서드
     * method name: sub
     * parameter: int 타입 2개
     * return: x
     * 실행내용
     *  - 매개변수로 전달 받은 2개 값의 차를 출력
     */
    public void sub(int num1 , int num2){
        int sub = num1 - num2;
        System.out.println(sub);
    }

    /**
     * 곱셈 메서드
     * method name: mul
     * parameter: int 타입 2개
     * return: int 타입
     * 실행내용
     *  - 매개변수로 전달 받은 2개 값의 곱 결과를 리턴
     */
    public int mul(int num1 , int num2){
        int result1 = num1;
        int result2 = num2;
        return result1* result2;
    }

    /**
     * 나눗셈 메서드
     * method name: div
     * parameter: 없음
     * return: int 타입
     * 실행내용
     *  - 스캐너로 나눗셈에 필요한 정수 2개를 입력받음
     *  - 나눗셈 결과를 리턴
     */
    public int div(){
        Scanner scanner = new Scanner(System.in);
        int num1 = scanner.nextInt();
        int num2 = scanner.nextInt();
        int result = num1 / num2;
        return result;
    }
}

 

 

getter/setter 메서드

  1. 클래스가 가지고 있는 필드는 외부에서 직접 접근을 못하게 해야함.
  • 필드에는 private 이라는 접근 제한자를 붙임.

예)

  1. getter/setter. 라는 메서드를 이용하여 필드값을 간접적으로 저장하고 사용하도록 함
  2. 각각의 필드는 각각의 getter/setter 메서드를 하나씩 가짐

A . setter 메서드

  • 필드에 값을 저장하기 위한 메서드
  • 필드 이름이 name 이라면 setName() 이라는 이름으로 만듦
  • 실행 내용은 저장할 값을 매개변수로 전달 받고 전달받은 값을 필드에 저장

B . getter 메서드

  • 필드값을 전달하기 위한 메서드
  • 필드 이름이 name 이라면 getName()이라는 이름으로 만듦
  • 해당 필드와 동일한 타입의 리턴 타입으로 정의하고 매개변수는 없음.
public class Ex{
private String name;

public void setName(String name){
     this.name = name
}
public String getName(){
      return name;
   }
}

 

getter/setter  예문

 

package ch10_class.ex8;

public class BookMain {
    public static void main(String[] args) {
        Book book = new Book();
//        book.bookTitle = "책제목1";
        book.setBookTitle("책제목1");
        String Title = book.getBookTitle();
        System.out.println("Title = " + Title);

        book.setBookAuthor("저자1");
        System.out.println(book.getBookAuthor());
    }
}

 

<메서드>

package ch10_class.ex8;

public class Book {
    private String bookTitle;
    private String bookAuthor;


    // bookTitle setter
    public void setBookTitle(String bookTitle){
        this.bookTitle = bookTitle;
    }

    // bookTitle getter
    public String getBookTitle(){
        return bookTitle;
    }

    // bookAuthor setter
    public void setBookAuthor(String bookAuthor){
        this.bookAuthor = bookAuthor;
    }

    // bookAuthor getter
    public String getBookAuthor(){
        return bookAuthor;
    }
}

 

 

<예제 2 >

getter / setter 활용

package ch10_class.ex9;

import java.util.Arrays;

public class StudentMain {
    public static void main(String[] args) {
        // 기본생성자로 Student 클래스 객체 만들고 setter 를 이용하여 필드값 채우기
        Student student = new Student();
        student.setStudentName("김00");
        student.setStudentNumber("0000000000");
        student.setStudentMajor("컴퓨터 공학");
        student.setStudentMobile("010-0000-0000");

        // 모든 필드를 매개변수로 하는 생성자로 Student 클래스 객체 만들기
        Student student1 = new Student("김00", "0000000" , " 컴퓨터 공학", "010-0000-0000");



        // 각각 객체에서 print 메서드 호출하여 필드값 출력
        String result = student.print();
        System.out.println(result);


    }
}

 

<메서드>

package ch10_class.ex9;

public class Student {
    /*
    필드
    이름(studentName)
    학번(studentNumber)
    학과(studentMajor)
    전화번호(studentMobile)
    */
    private String studentName;
    private String studentNumber;
    private String studentMajor;
    private String studentMobile;


    //각 필드의 getter/setter 메서드

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentNumber(String studentNumber) {
        this.studentNumber = studentNumber;
    }

    public String getStudentNumber() {
        return studentNumber;
    }

    public void setStudentMajor(String studentMajor) {
        this.studentMajor = studentMajor;
    }

    public String getStudentMajor() {
        return studentMajor;
    }

    public void setStudentMobile(String studentMobile) {
        this.studentMobile = studentMobile;
    }

    public String getStudentMobile() {
        return studentMobile;
    }

    //기본 생성자
    public Student() {

    }

    // 모든 필드를 매개변수로 하는 생성자
    public Student(String studentName, String studentNumber, String studentMajor, String studentMobile) {
        this.studentName = studentName;
        this.studentNumber = studentNumber;
        this.studentMajor = studentMajor;
        this.studentMobile = studentMobile;
    }


    // 필드에 저장된 값을 출력하는 print 메서드
    public String print(){
        String result = "이름: " + studentName +" " +"학번: "+ studentNumber +" "+"학과: "+ studentMajor +" "+"전화번호: "+ studentMobile;
        return result;
    }
}

 

객체 지향의 기본적인 원리는 입력값과 리턴값을 주고 받는것이기에 입력값 => 실행문 => 출력값 => 출력문이다

 

기본적인 원리와 순서를 이해하는것이 중요하다

728x90
반응형