본문 바로가기
Java

Java - 객체지향 프로그래밍 기초 1

by icblue21 2022. 11. 17.
728x90

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

객체(Object)

  • 의사나 행위가 미치는 대상
  • 구체적, 추상적 데이터의 단위 ex) 학생, 회원, 주문, 배송

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

  • 절차 지향 프로그래밍
    • 시간이나 사건의 흐름에 따른 프로그래밍
    • ex) 일어난다 -> 씻는다 -> 밥을 먹는다 -> 학교를 간다
  • 객체 지향 프로그래밍
    • 학생, 밥, 학교, 행동을 객체로 나누어 프로그래밍
  • 객체 지향 프로그램은 어떻게 구현하는가?
    1. 객체를 정의
    2. 각 객체가 제공하는 기능들 구현
    3. 각 객체가 제공하는 기능들 간의 소통(메시지 전달)을 통하여 객체간의 협력 구현
  • 객체를 클래스로 구현해보기
public class Student {
	
    int studentNumber;		// 학번
    String studentName;		// 학생이름
    String majorName;		// 전공과목
    int majorCode; 			// 전공학과코드
    int grade; 				// 학년
}
  • 객체 지향 프로그래밍을 할 때는
    • 객체의 속성은 클래스의 멤버 변수(member variable)로 선언 한다.
    • 클래스는 대문자로 시작하는 것이 좋다. (upper camel case)
    • 변수는 소문자로 시작하는 것이 좋다. (lower camel case)

함수와 메서드

함수(function)

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

함수 정의하기

int add(int num1, int num2){ // 매개변수로 2개의 숫자를 받아 더하는 함수
	
    int result;
    result = num1 + num2;
    return result;	
}

함수 호출과 스택 메모리

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

메서드(Method)

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

인스턴스 생성과 힙 메모리

인스턴스(instance)

  • 클래스는 객체의 속성을 정의하고 기능을 구현하여 만들어 놓은 코드 상태
  • 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됨
    ex) 학생의 이름, 학번, 학년
  • new 키워드를 사용하여 인스턴스 생성
Student stdKim = new Student(); // stdKim 인스턴스 생성
Studnet stdLee = new Student(); // stdLee 인스턴스 생성

힙 메모리(heap memory)

  • 생성된 인스턴스는 동적 메모리(heap memory)에 할당됨
  • C,C++에서는 사용한 동적 메모리를 프로그래머가 직접 해제해야 함 ex) malloc, free
  • 자바에서는 Gabage Collector가 주기적으로 사용하지 않는 메모리를 수거함
  • 하나의 클래스로 부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨
  • 용어
    • 참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수
    • 참조 값 : 생성된 인스턴스의 메모리 주소 값

생성자

생성자(constructor)란?

  • 생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 객체를 생성하기 위해 new 와 함께 호출 됨
  • 객체가 생성될 때 변수나 상수를 초기화 하거나 다른 초기화 기능을 수행하는 메서드를 호출 함
  • 생성자는 반환 값이 없고, 클래스의 이름과 동일
  • 대부분의 생성자는 외부에서 접근 가능하지만, 필요에 의해 private 으로 선언되는 경우도 있음

기본 생성자(default constructor)

  • 클래스에는 반드시 적어도 하나 이상의 생성자가 존재해야 함
  • 클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할 수 있음
  • 클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어 줌
  • 매개 변수, 구현부가 없음

생성자 만들기

public class Student {
	public int studentNumber;
	public String studentName;
	public int grade;
    
    public Student(){
        // 기본 생성자
    }

	public Student(int studentNumber, String studentName, int grade) {
		this.studentNumber = studentNumber;
		this.studentName = studentName;
		this.grade = grade;
	} // 매개변수 생성자

}
 

'Java' 카테고리의 다른 글

Java - 상속  (0) 2022.11.17
Java - 객체지향 프로그래밍 기초 2  (0) 2022.11.17
Java - 조건문, 반복문  (0) 2022.11.17
Java - 자료형, 연산자  (0) 2022.11.17
Java - 프로그래밍 기초  (0) 2022.11.17

댓글