Java/Java

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

code2772 2022. 10. 4. 12:16
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 메소드를 포함해야 하며 생성자는 오버로딩되어 여러개를 생성)

 

반응형