본문 바로가기
Java

Java 객체 지향 입문 / 객체지향이란, 클래스 구현, 함수와 메서드 구현

by 리잼 2022. 11. 7.
반응형

1. 객체와 객체지향 프로그래밍

객체 ( Object )

  • 구체적, 추상적 데이터의 단위 ( 학생, 회원, 생산, 주문, 배송 )

객체 지향 프로그램과 절차 지향 프로그래밍

  • ex)  출근 시나리오 과정
  • 절차 지향 프로그래밍
    - 시간이나 사건의 흐름에 따른 프로그래밍
    기상 > 세면 > 아침식사 > 지하철을 탄다 > 요금지불 > 하차 > 회사 도착
  • 객체 지향 프로그래밍

OOP의 예

객체 지향 프로그램은 어떻게 구현되는가

  • 객체를 정의
  • 각 객체 제공하는 기능들을 구현
  • 각 객체가 제공하는 기능 간의 소통(메세지)를 통해 객체간의 협력 구현

2. 생활 속에서 객체를 찾아 클래스로 구현해보기

ex) 학사 관리 시스템

  • 학생클래스
public class Student {
    int studentNumber; 	// 학번
    String studentName; // 학생이름
    int majorCode; 	// 전공코드
    String majorName; 	// 전공
    int grade;	// 학년
}

객체 지향 프로그램을 할 때는

  • 객체를 정의하고
  • 각 객체의 속성을 멤버 변수로 역할을 메서드로 구현
  • 각 객체간의 협력을 구현

클래스 코딩하기

  • 클래스는 대문자로 시작하는것이 좋다
  • java 파일 하나에 클래스는 여러개가 있을수 있지만, public 클래스는 하나이고, public 클래스와 .java파일의 일름은 동일함
  • camel notation 방식으로 작명

3. 함수와 메서드

함수( Function )란

  • 하나의 기능을 수행하는 일련의 코드
  • 구현된 함수는 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환됨
  • 함수로 구현된 하나의 기능은 여러곳에서 동일한 방식으로 호출되어 사용될 수 있음

함수 정의하기

  • 함수는 이름, 매개변수, 반환 값, 함수 몸체로 구성됨
int add (int num1, int num2) {
	int result;
    result = num1 + num2;
    return result;
}

함수 구현 예제

public class FunctionTest {
	
	// 매개변수와 반환값이 있는 함수
	public static int addNum(int num1, int num2) {
		int result;
		result = num1 + num2;
		return result;
	}
	
	// 반환값이 없는 함수
	public static void sayHello(String greeting) {
		System.out.println(greeting);
	}
	
	// 반환값만 있는 함수
	public static int calcSum() {
		int sum = 0;
		int i;
		
		for(i=0; i<=100; i++) {
			sum += i;
		}
		return sum;
	}
	
	public static void main(String[] args) {
		int n1 = 10;
		int n2 = 20;
		
		int total = addNum(n1, n2);
		System.out.println(total); // 30 출력
		
		sayHello("안녕하세요"); // 안녕하세요 출력
		total = calcSum(); 
		System.out.println(total); // 5050 출력
	}
}

함수 호출과 스택 메모리

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

Stack Memory

  1. main() 함수에서 사용할 메모리 공간이 생성됨
  2. main()에서 addNum() 함수 호출
  3. 스택에 함수가 사용할 메모리 공간이 생성됨 (n1, n2, result)
  4. addNum() 함수가 수행 후 종료되면 스택 공간은 자동으로 사라짐

메서드 ( Method )

  • 객체의 기능을 구현하기 위해 클래스 내부에 생성되는 함수
  • 멤버 함수라고도 함
  • 메서드를 구현함으로써 객체의 기능이 구현 된다.
  • 메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는것이 좋다
    ex) getStudentName(), getStudentNumber() ....

4. 객체의 속성은 멤버 변수로, 객체의 기능은 메소드로 구현된다.

학생 클래스를 정의하고 사용해본다

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

	public int studentId;
	public String studentName;
	public String address;
	
	public void showStudentInfo() {
		System.out.println(studentId + "학번의 학생 이름은 " + studentName + " 이고, 주소는 " + address +" 입니다.");
	}
	
	public String getStudentName() {
		return studentName;
	}
	
	public void setStudentName(String name) {
		studentName = name;
	}
	
		
}

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

public class StudentTest {

	public static void main(String[] args) {

		Student studentLee = new Student();
		
		studentLee.studentId  = 12345;
		studentLee.setStudentName("Lee");
		studentLee.address = "서울특별시";
		
		studentLee.showStudentInfo();
		
		Student studentKim = new Student();
		// 12345학번의 학생 이름은 Lee 이고, 주소는 서울특별시 입니다.
        
		studentKim.studentId  = 54321;
		studentKim.setStudentName("Kim");
		studentKim.address = "서울특별시";
		
		studentKim.showStudentInfo();
        // 54321학번의 학생 이름은 Kim 이고, 주소는 서울특별시 입니다.

	}

}

 

반응형