JAVA 웹 개발 패키지 - 패스트캠퍼스/Chapter2

함수와 메서드

giggs 2021. 12. 25. 19:32

 

함수 (function)

 

 

하나의 기능을 수행하는 일련의 코드

구현된(정의된) 함수는 호출하여 사용하고, 호출된 함수는 기능이 끝나면 제어가 반환

호출 시 - 메모리 공간 새로 생김(스택 메모리) -> 반환되면 자동으로 사라짐

 

 

 

 

함수로 구현된 하나의 기능은

여러 곳에서 동일한 방식으로 호출되어 사용될 수 있음

 

 

 

 

 

 

 

함수 정의하기

 

 

함수는 이름, 매개 변수, 반환 값, 함수 몸체(body)로 구성됨

 

함수 처리에 필요한 input이 있는지 - 있으면 ( 괄호 ) 안에 타입과 같이 써준다. - 매개변수

                                    없으면 - ( 괄호 ) 만 써준다 ()

 

반환 값 필요하면 return 값과 같은 타입 형 써준다 여기서는 int add (~~~~

반환 값 필요 없으면 void add ( ~~

 

int add(int num1, int num2) {
		
	int result;
	result = num1 + num2;
	return result;
}

 

 

함수 구현하기 예제

 

함수 선언 

이름, 매개변수, 반환 값, 함수 몸체

 

addNum

int형 2개

있음 return result - int

몸체 - 계산식

 

sayHello

string greeting 1개

없음 void

몸체 - greeting값 출력

 

calcSum

매개변수 없음

있음 return sum - int

몸체 - 계산식

 

 

호출해서 사용한다

 

addNum 호출 ( 1,2)

sayHello 호출 ("")

calcSum 호출

 

 

 

 

 

출력 값 확인 GOOD :)

 

 

 

 

 

 

함수 호출과 스택 메모리

 

스택 메모리

  • 함수가 호출될 때 지역 변수들이 사용하는 메모리
  • 함수의 수행이 끝나면 자동으로 반환되는 메모리

 

 

 

 


 

 

 

메서드 (method)

  • 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수
  • 멤버 함수 (member function) 이라고도 함
  • 메서드를 구현함으로써 객체의 기능이 구현됨
  • 메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는 것이 좋음
  • 예) getStudentName()
  • class를 쓰기 위한 class

 

 

객체의 속성은 멤버 변수로, 객체의 기능은 메서드로 구현한다

 

학생 클래스를 정의하고 이를 사용해 보자

1. 학생 클래스의 속성을 멤버 변수로 선언하고 메서드를 구현한다

2. 학생 클래스를 생성하여 생성된 객체(인스턴스)에 각각 다른 이름과 주소를 대입한다

 

 

 

 

메서드 구현

 

 

 

 

 

반환 값있으면 get~

반환 값없이 세팅 필요하면 set~ 뒤에서 자세히

 

 

 

 

 

 

 

int num 쓰듯이 이제는

Student num 이런 식으로 사용

 

new Student ()

학생 1명 생성- 인스턴스 1개 생성

 

 

 

 

 

 

메서드 함수 호출해서 사용

 

 

 

 

 

 

 

 

메서드 함수에 맞게 출력

메서드 함수 위치한 곳 표시

 

 

 

 


 

 

 

인스턴스 생성과 힙 메모리 (heap memory)

 

 

인스턴스 (instance)

  • 클래스는 객체의 속성을 정의하고, 기능을 구현하여 만들어 놓은 코드 상태
  • 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됨
  • 가령, 학생의 클래스에서 생성된 각각의 인스턴스는 각각 다른 이름, 학번, 학년 등의 값을 가지게 됨
  • new 키워드를 사용하여 인스턴스 생성
  • 같은 class 안에도 다른 메모리에 위치하기 때문에 각각 이름, id 등을 다르게 줄 수 있다.

 

 

힙 메모리

  • 생성된 인스턴스는 동적 메모리(heap memory)에 할당됨
  • C나 C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제시켜야 함 ( free() 난 delete 이용)
  • 자바에서는 ( Gabage Collector) GC가 주기 적으로 사용하지 않는 메모리를 수거
  • 하나의 클래스로부터 여러 개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨

 

 

studentLee는 그냥 지역변수

여기에 할당된 값은

힙 메모리에 있는 인스턴스의 주소 값

 

studentLee. (점) 하면은 할당된 공간 중에서 

. id 면 id 공간을 가리키게 되는 것

 

studentLee 참조 변수라고 함

 

 


 

 

 

용어 정리

    객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스

    클래스 : 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태

    인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태

    멤버 변수 : 클래스의 속성, 특성

    메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현한 함수

    참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수

    참조 값 : 생성된 인스턴스의 메모리 주소 값

 


 

review

함수 부분에서는
처음 듣는 용어와 메모리 개념이 많았다.

함수의 정의와 호출

호출로 인한 스택 메모리와 힙 메모리
힙 메모리 안에 인스턴스 값

객체의 기능 구현을 위한 클래스 내부의 함수 메서드
객체의 속성은 멤버 변수로, 기능 구현은 메서드로

오우오우
개념을 확실히 잡고 나아가자!