-
Java - Object 1개발언어/JAVA 2023. 10. 16. 13:18
Java Type
public class Student{ int studentID; //학번 String studentName; //학생 이름 int grade; //학년 String address; //사는 곳 }
public class Person{ String name; //이름 int height; //키 double weight; //몸무게 char gender; //성별 boolean married; //결혼여부 }
참조 자료형으로 사용하는 클래스는 String,Dtate와 같은 이미 JDK에서 제공하는 것일 수도 있고, 개발자가 직접만든 Student나 Person같은 클래스가 변수의 자료형이 될 수도 있다.
패키지
패키지는 간단하게 말하면 클래스 파일의 묶음이다. 패키지를 만들면 프로젝트 하위에 물리적으로 디렉터리가 생성된다. 또한 패키지는 계층 구조를 가질 수 있다. 프로젝트를 수행할 때 패키지의 계층 구조를 구성하는 것은 전체 프로젝트를 어떻게 관리할지와 관련이 있다. 중요한건 패키지가 단순한 클래스의 묶음이 아니라 프로젝트 전체 소스 코드를 구성하는 계층구조가 된다는 것이다. 이 계층 구조를 잘 구성해야 소스 코드 관리와 유지 보수가 편리하다.
StudentView.java
package domain.student.view; public class StudentView{ }
위 파일의 이름은 일단 StudentView이지만, 클래스의 전체 이름(class full name)은 domain.student.view.studentView이다. 전체이름이 중요한 이유는 클래스 이름이 같다고 해도 패키지 이름이 다르면 클래스 전체이름이 다르므로 다른 클래스가 된다. 즉 같은 이름의 클래스라도 다른 패키지에 속해 있으면 서로 연관이 없다.
함수 호출과 스택 메모리
package methodofclass; public class FunctionTest{ public static void main(String[] args){ int num1 = 10; int num2 = 20; int sum = add(num1,num2); System.out.println(num1+ " + "+num2+ " = "+sum+"입니다"); } public static int add(int n1, int n2){ int result = n1 + n2; return result; } }
함수를 호출하면 그 함수만을 위한 메모리 공간이 할당되는데, 이 메모리 공간을 스택(stack)이라고 부른다.
💡 tip) 스택(stack)
스택은 자료가 상자처럼 쌓이는 자료 구조를 말한다. 스택은 넣을 때와는 다르게 마지막에 추가된 자료부터 순서대로 꺼내서 사용하는 구조로 LIFO(Last In First Out)구조라고도 부른다.1. main()함수 실행
함수가 호출되면 그 함수가 사용할 메모리 공간이 스택에 생성된다. 프로그램을 시작할 때 main()함수부터 호출하기 때문에 가장 먼저 main()함수에 포함된 변수 num1, num2,sum을 저장할 메모리 공간이 생성된다. 그리고 main ()함수에서 add()함수를 호출하면 add()함수를 호출하면 add() 함수를 저장할 메모리 공간이 스택에 새롭게 생성된다.
2.add()함수 메모리 공간 해제
add()함수의 수행이 끝나고 함수에 할당했던 메모리 공간을 해제하는 과정은 위 그림과 같다. add()함수 수행이 끝나고 결과 값이 반환되면 add() 함수가 사용하던 메모리 공간은 자동으로 사라진다. 프로그램에서 여러 함수를 사용하는 경우에는 함수를 호출한 순서대로 메모리 공간이 만들어지고 맨 마지막에 호출한 함수부터 반환된다. 따라서 메모리 공간도 맨 마지막에 추가된 것부터 스택에서 사라진다. 즉 A() -> B() -> C() 함수의 순서로 호출했다면 C()->B()->A() 순서로 반환되고 스택 메모리도 이 순서대로 소멸한다.
함수의 장점
첫째, 함수를 이용해 기능을 분리해 구현하면 프로그램 코드의 가독성이 좋아진다. 너무 긴 코드가 main()함수에 모두 들어있으면 이해하기가 어렵다.
둘째, 기능별로 함수를 구현해 놓으면 같은 기능을 매번 코드로 만들지 않고 그 기능 함수를 호출하면 되니까 편리하다.
셋째, 프로그램을 실행할 때 생긴 오류를 수정하는 디버깅 작업을 할 때도 편리하다. 하나의 기능이 하마늬 함수로 구현되어 있기 때문에 오류가 난 기능만 찾아서 수정하면 되기 때문이다.
클래스 기능을 구현하는 메서드
함수는 Java이외에도 오래전에 출시된 많은 프로그래밍 언어에서 이미 사용하고 있는 중요한 코드 구현 방법 중 하나이다. Java프로그램에는 클래스 내부에서 사용하는 멤버 함수가 있다. 이를 메서드(method)라고 하는데 메서드 멤버 변수를 사용하여 클래스의 기능을 구현한다. 즉 메서드는 함수에 객체 지향 개념이 포함된 용어로 이해하면 된다.
[출저 - Do it! 자바 프로그래밍 입문 , 박은종]
http://www.easyspub.co.kr/20_Menu/BookView/A001/267/PUB
'개발언어 > JAVA' 카테고리의 다른 글
Java - Object4 (1) 2023.10.17 Java - Object3 (1) 2023.10.16 Java - 메서드 호출 시 파라미터를 전달하는 방법(Call By Value, Call By Reference) (0) 2023.10.10 JAVA문법 IndexOf(),Substring() (0) 2022.01.14 char타입 다루기 (0) 2022.01.13