본문 바로가기
Java/Java

국비지원 자바 복습 6 (메소드, 메인메소드, opp, 클래스)

by code2772 2022. 10. 4.

[ 목차 ]

    728x90
    반응형

    1. 메소드(method)

    - 어떤 로직이나 기능을 만들어 내는 방법(함수)

    - 코드를 재활용 할 수 있도록 하여 경제적으로 코드를 작성할 수 있음

    - 객체를 생성하여 참조변수를 통해 호출할 수 있는 함수

    접근제어자 [static] 변환타입 메소드이름([매개변수1, 매개변수2..]) { //매개변수 : 원하는 값을 넣을 수 있다.

    // 반환타입이 없을 경우 void를 사용한다.

    메소드이름이 호출되면 실행할 문장;

    ...

    [return 반환값] // 내가 원하는 값을 돌려준다. 메소드 호출한곳으로

    // 반환값은 반환타입과 동일하게 사용한다.

    }

    // static : 객체를 생성하지 않아도 코드가 실행되면 메모리에 적재된다

    public static int sum(int num1, int num2){

    int tot = num1 + num2;

    return tot;

    }

    //int result = sum(10, 5)를 호출하면 15가 된다.

    //호출 -> 동일한 메소드에서 호출 시 return 값을 반환한다.

    int num = 메소드이름();

    - 이름만 호출하면 실행되는 메소드 - 매개변수가 없다.

    public void method1(){

    System.out.println("Hello World");

    }

    method1();

    - 매개변수(parameter)가 있는 메소드

    public void method2(int num){

    System.out.println(num);

    }

    method2(10);

    - return값이 있는 메소드

    public int method3(int num){

    ......

    return tot; // return을 쓰는이유 :

    }

    int result = method(10);//return값이 결과적으로 result로 들어간다.

    //heap에 기록된 것은 종료시까지 지우지 못하고 method내에 있는 stack은 종료시 초기화된다.

    static이 없어 Method2 method2 = new Method2() 선언하여 호출해야한다.

     

    - 매개변수가 가변적일 때(keyword arguments)

    public int mehtod4(int... values){

    int sum =0;

    for(int val : values) sum+=val;

    return sum;

    }

    문제.

    사칙연산을 구하는 메소드를 각각 만들어 아래와 같이 출력하는 프로그램을 작성해보자.

    (단, 메소드는 각 연산(+,=,*,/)에 따하 별고로 작성. return 키워드를 반그시 사용)

    첫 번째 숫자를 입력 : 10

    두 번째 숫자를 입력 : 3

    2. main 메소드

    - 자바 어플리케이션이 실행될 때 가장 먼저 실행되며 프로그램이 구동되는 메소드

    - JVM이 자동으로 실행시킴

     

    ✨✨✨

    3. 객체지향 프로그래밍(OOP, Object Oriented Programming)

    - 실제 세계를 모델링하여 소프트웨어를 개발하는 방법

    - 데이터와 절차를 하나의 덩어리(집합)로 묶어서 생각

    - 여러명이 하나의 프로젝트를 개발하기 좋음 -> 설계가 힘듬

    ✔ 절차지향 프로그래밍

    - 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 됨

    - 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법

    - 대표적인 언어가 C언어, 가독성이 좋고 여러명이 개발하기 힘듬

    ✔ 함수형 프로그래밍

    - 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할지 결정하는 역할

    - 모든 것을 함수로 나누어 문제를 해결하는 기법

    - 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이

    - 대표적인 언어로는 클로저, 하스켈, 리스프

    강아지 - 동사 : method 명사 : 필드(변수)

    - 다리갯수 : 4

    - 색상 : 흰색

    - 이름 : 루시

    - 몸무게 : 3kg

    - 종 : 포메

    - 먹는다, 뛴다, 논다, 잔다......

    // 클래스내에는 메소드와 필드(변수/명사)가 들어가 구성한다. 설계도와 같은 역할

     

    4. 클래스(class)

    - 설계도와 같은 의미

    - 객체의 상태를 저장 필드(변수)와 객체의 행동을 나타내는 메소드(함수)로 구성

    ✔ 객체(Object) - 메모리에 실체화 되고 쓸 수 있으면 객체

    - 소프트웨어 세계에 구현할 대상

    - 클래스에 선언된 모양 그대로 메모리에 생성된 실체

    ✔ 인스턴스{Instance)(복제된) - 구체적으로 표현할 수 있으면 인스턴스, 객체에 포함된 용어이며 쓸 수 있다.

    - 설게도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체

    - 객체를 소프트웨어 실체화 하면 그것을 인스턴스라고 부름(실체화된 인스턴스는 메모리에 할당)

    - 인스턴스 객체에 포함되는 개념

    "객체는 클래스의 인스턴스다!"

    클래스(파일) -------> new 연산자 --------> 객체, 인스턴스(메모리)

     

    5. 클래스를 만드는 방법

    접근제어자 class 클래스이름 {

    자료형 필드명1; //변수

    자료형 필드명2 = 값; //변수

    ......

    접근제어자 [static] 반환형 메소드이름(){// 함수 -> 메소드

    }

    ...

    }

    클래스명 참조변수 = new 생성자();//클래스의 인스턴스가 만들어지고 메모리에 올라간다.

     

    6. 생성자(Constructor)

    - new 연산자를 통해 객체를 생성할 때 반드시 호출되는 메서드

    - 객체를 생성할 때 제일 먼저 실행되는 메서드

    - 필드를 초기화 하는 역할

    - 반환타입이 없음

    - 직접 생성하지 않으면 JVM이 자동으로 빈 생성자를 만들어 호출

    [접근제어자] 클래스명([매개변수1, 매개변수2....]){

    생성자가 호출되면 실행할 문장;

    ....

    }

    ✔ this 연산자

    현재 클래스내에 존재하는 필드를 가리킴

    ✔ this 메소드

    현재 클래스내에 존재하는 메

    ✔ 필드의 선언 초기값

    byte : 0

    short : 0

    int : 0

    long : 0

    char : \u0000

    float : 0.0

    double : 0.0

    boolean : false

    String, 배열 ,클래스, 인터페이스 : null

    생성자 오버로딩

    시그니처가 다른 같은 이름의 메소드를 여러개 만드는 것

    과제.

    현실세계에 있는 Object를 선택하여 클래스로 설계하고 데이터를 입력하여

    이를 출력하는 프로그램을 만들어보자.

    (단, 클래스에는 생성자 및 getter/setter 메소드를 포함해야 하며 생성자는 오버로딩되어 여러개를 생성)

     

    반응형