자바(Java) 프로그래밍, 클래스와 객체 Part. 1

반응형
    728x90
    반응형

    1. 클래스

    1-1. 클래스 문법

    (접근 제어자) class 클래스 이름 {
    	멤버 변수;
        메서드;
    }

    클래스는 객체의 속성과 기능을 코드로 구현한 것이다.

    클래스를 정의하려면 우선 클래스 이름과 클래스가 가지는 속성

    또는 특성이 필요하다.

    자바에서 클래스 이름은 대문자로 시작한다.

    1-2. 클래스 기능을 구현하는 메서드

    클래스 내부에서 멤버 벼수를 사용하여 클래스 기능을

    구현한 것을 '멤버 함수' 또는 '메서드' 라고 한다.

     

    2. 패키지

    패키지란?

    패키지는 클래스 파일의 묶음이다.

    패키지를 만들면 프로젝트 하위에 디렉터리가 생성된다.

    또한 패키지는 계층 구조를 가질 수 있다. 

    따라서 프로젝트를 수행할 때 패키지의 계층구조를

    구성하는 것은 전체 프로젝트의 소스 코드를

    어떻게 관리할지 관련이 있다.

     

    3. 메서드

    3-1. 함수

    함수란 하나의 기능을 수행하는 일련의 코드를 말한다.

    함수는 어떤 기능을 수행하도록 미리 구현해 놓고

    필요할 때마다 호출하여 사용할 수 있다.

    3-2. 함수 정의하기

    int add (int num1, int num2){ //함수 이름 add, 매개변수 num1, num2
    	int result;
        result = num1 + num2;
        return result; //return 예약어
    }

    3-3. 함수 호출 및 값 반환

    함수 구현하고 호출하기 예제

    package classpart;
    
    public class FunctionTest {
    
    	public static void main(String[] args) {
    		int num1 = 10;
    		int num2 = 20;
    		
    		int sum = add(num1,num2); //add()함수 호
    		System.out.printf("%d + %d = %d 입니다.", num1, num2, sum);
    	}
    	public static int add(int n1, int n2) {
    		int result = n1 + n2;	//add() 함
    		return result;
    	}
    
    }

    3-4. 클래스 기능을 구현하는 메서드

    메서드 구현하기 : 학생이름 반환 메서드 예제

    package classpart;
    
    public class Student {
    	int studentID;
    	String studentName;
    	int grade;
    	String address;
    	
    	public String getStudentName( ) {
    		return studentName;
    	}
    	public void setStudentName(String name) {
    		studentName = name;
    	}
    }

    4. 메서드

    4-1. 함수

    함수란 '하나의 기능을 수행하는 일련의 코드'를 말한다.

    더하기를 수행해야 하는 경우의 수가 3가지 있다고 가정하면

    일일이 코드를 친다면 + 연산 프로그램으로 3번 구현 해야한다.

    하지만 함수를 구현해 놓으면 필요할 때 마다 불러와서 사용할 수 있다.

    4-2. 함수 정의

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

    함수의 이름은 add

    매개변수는 int형의 num1, num2

    return 예약어로 구성 되어 있음을 볼 수 있다.

    4-3. 함수 호출하고 값 반환하기

    함수 구현 및 호출 예제

    package classpart;
    
    public class FuntionTest {
    
    	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;
    	}
    }

    4-4. 함수의 장점

    1. 함수를 사용하면 기능을 나누어 코드를 효율적으로 구현할 수 있다.

    2. 기능별로 함수를 구현해 놓으면 같은 기능을 매번 코드로 만들지 않고

    그 기능의 함수를 호출하면 되어 편리하고 중복되는 코드를 막을 수 있다.

    3. 프로그램을 실행할 때 생긴 오류를 수정하는 디버깅 장업을 할 때도 편리하다.

    4-5. 클래스 기능을 구현하는 메서드

    메서드 구현 예제 - 학생 이름 반환 메서드

    package classpart;
    
    public class StudentName {
    
    	int studentID;
    	String studentName;
    	int grade;
    	String address;
    
    	public String getStudentName() {
    		return studentName;
    	}
    
    	public void setStudentName(String name) {
    		studentName = name;
    	}
    }

    5. 클래스와 인스턴스

    5-1. 클래스 사용과 main( )함수

    main()함수는 자바 가상머신이 프로그램을 시작하기 위해

    호출하는 함수다. 클래스 내부에 만들지만, 클래스의 메서드는 아니다.

    main() 함수에서 클래스를 사용하는 방법은 두가지가 있다.

    1. 만든 클래스 내부에 main() 함수를 만드는 것

    package classpart;
    
    public class Student {
    
    	int studentID;
    	String studentName;
    	int grade;
    	String address;
    
    	public String getStudentName() {
    		return studentName;
    	}
    
    	public static void main(String[] args) {
    		Student studentAhn = new Student();
    		studentAhn.studentName = "안철수";
    
    		System.out.println(studentAhn.studentName);
    		System.out.println(studentAhn.getStudentName());
    	}
    }

    2. 외부에 테스트용 클래스를 만들어 사용

    package classpart;
    
    public class StudentTest {
    
    	public static void main(String[] args) {
    		Student studentAhn = new Student();
    		studentAhn.studentName = "안철수";
    
    		System.out.println(studentAhn.studentName);
    		System.out.println(studentAhn.getStudentName());
    	}
    
    }

    5-2. new 예약어로 클래스 생성하기

    클래스형 변수이름 = new 생성자;
    //예시
    Student studentAhn = new Student();

    해당 코드는 Student 클래스 자료형으로 studentAhn 변수를 선언하고

    new Student();로 Student 클래스를 생성하여 studentAhn에 대입한다는 뜻이다.

    5-3. 인스턴스와 참조 변수

    객체, 클래스, 인스턴스

    객체란 '의사나 행위가 미치는 대상'이며 이를 코드로 구현한 것이 클래스이다.

    그리고 클래스가 메모리 공간에 생성된 상태를 인스턴스라고 한다.

    인스턴스 여러개 생성하기 예제

    package classpart;
    
    public class StudentTest1 {
    
    	public static void main(String[] args) {
    		Student student1 = new Student();
    		student1.studentName = "안철수";
    		System.out.println(student1.getStudentName());
    		Student student2 = new Student();
    		student2.studentName = "안승연";
    		System.out.println(student2.getStudentName());
    	}
    
    }

    5-4. 인스턴스와 힙 메모리

    new Student()를 선언하면 Student 인스턴스 하나가 생성되는데

    각 Student는 멤버 변수를 가지고 있다. 그리고 이들 변수를

    저장할 공간이 있어야한다. 이때 사용하는 메모리가 힙 메모리 이다.

    728x90
    반응형

    댓글

    Designed by JB FACTORY