객체 지향 프로그래밍

지원·2023년 8월 26일

Java Programming

목록 보기
16/25

인스턴스 생성 3가지


  1. new 연산자와 생성자를 이용하여 인스턴스 생성

  2. 클래스 로더를 이용
    Spring 프레임워크 등에서 사용

  3. 메모리에 있는 인스턴스를 복제(clone)


메모리


  • 메모리에 올라가야만 실행 가능하다.

  • new 연산자를 이용하면 인스턴스가 생성된다.

  • new를 굉장히 많이 사용하면 메모리에 인스턴스가 많아지고 메모리가 부족해서 프로그램이 죽을 수 있다.


인스턴스, 레퍼런스 타입, 레퍼런스 변수 구별


  • 인스턴스를 생성할 때마다 메모리에 인스턴스가 생성되므로 필요한 개수만큼 만들어야 한다.

만들고 싶은 프로그램이 있다면, 그 프로그램을 구성하고 있는 객체들이 메모리에 몇 개가 올라가고, 메모리에 올라간 객체들 간에는 어떤 관계를 맺어야 할까를 생각한 후 클래스를 작성해야 한다.

객체 지향의 핵심은 메시징
훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가 보다 모듈이 어떻게 커뮤니케이션하는가에 달려있다.

메시징은 어떤 객체가 다른 객체의 메소드를 호출하는 것
-> 객체 지향 프로그래밍을 한다는 것은 메소드가 언제, 어떻게 호출되고 메소드의 이름은 어떻게 지어야 하는지, 어떻게 호출하는 지를 고민해야 한다.


객체는 자율적인 책임을 가진다.

자율적인 객체란 스스로 정한 원칙에 따라 판단하고 스스로의 의지를 기반으로 행동하는 객체이다. 객체가 어떤 행동을 하는 유일한 이유는 다른 객체로부터 요청을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라 한다.

자율적인 책임의 특징은 객체가 어떻게 해야 하는가가 아니라 무엇을 해야하는가를 설명한다는 것이다.

출처:객체 지향의 사실과 오해(출판사: 위키북스, 저자: 조영호)


메시지와 메소드

  • 요청이라는 메시지 → 객체 : 메소드 호출

메소드 선언

[접근제한자] [static] 리턴type 메소드이름([매개변수,...]) {
	실행문
    ...
}
  • 대괄호는 생략 가능하다.

⭐메소드 이름은 식별자 규칙과 같지만, 소문자로 시작하는 것이 관례이다.


매개변수 vs 전달인자

  • 매개변수(parameter): 메소드의 정의 부분에 나열되어 있는 변수

  • 전달인자(argument): 메소드를 호출할 때 전달되는 실제 값


매개변수, 반환값

  • 매개변수는 메소드에 전달하는 값

  • 반환값은 메소드가 외부로 반환하는 값


매개변수 O, 반환값 O

public int method(int x) {
	....
}

매개변수 X, 반환값 X

public void method1() {
	....
}

매개변수 O, 반환값 X

public void method2(int x) {
	....
}

매개변수 X, 반환값 O

public int method3( ) {
	....
}

매개변수 2개, 반환값 X

public void method4(int x, int y) {
	....
}

⭐메소드 선언 시, 매개변수의 개수와 타입이 중요하다. 변수 명은 이해하기 쉽게 작성하면 된다.

profile
우주 정복자

0개의 댓글