JAVA

[JAVA] 객체와 클래스

sian han 2022. 2. 21. 19:56

 

 

객체지향프로그래밍

현실에 존재하는 사물과 대상, 그리고 그에 따른 행동을 있는 그대로 실체화시키는 형태의 프로그래밍

사물과 대상의 행동을 있는 그대로 실체화시키는 프로그래밍

 

 

 

※ 객체

상태정보(속성, 데이터)와 행동(기능)으로 구성됨

 

        상태 => 변수를 통해서 표현됨 

        행동 => 메소드를 통해 표현됨

 

예) 과일장사에게 두 개의 사과를 구매했다.

  ▷ 객체의 종류 - 나, 과일장사, 사과

 

'나'라는 객체가 '과일장사'라는 객체로부터 '사과'객체를 구매하는 행위도 그대로 표현할 수 있다.

과일장사 객체 과일장사는 과일을 판다. (행동)

과일장사는 사과 20개, 귤 10개를 보유하고 있다. = 과일의 개수 (상태)

과일장사의 과일 판매수익은 50000원이다. - 판매수익 (상태)

 

▽메소드로 나타내기

int saleApple(int money){ //과일 구매액
int num=money/1000; //사과가 개당 1000원
numOfApple -= num; //사과의 수가 줄어들고,
myMoney += money; //판매수익이 발생
return num; //실제 구매가 발생한 사과의 수
}

 

※클래스

Q. 클래스란 무엇입니까 ? 

A. 클래스는 두가지 관점에서 설명할 수 있습니다.

 

[1]객체지향 이론의관점
     - 객체를 생성하기 위한 틀로서 상태정보와 행동으로 구성되어 있다
   
[2]프로그래밍관점
     - 자료형을 정의하는 것으로
     관련 변수와 메서드를 함께 정의한 것 

 

 

 

클래스 정의 ( 데이터 + 메서드 = 클래스 )

 = 클래스를 정의하는 것은 자료형을 정의하는 것과 같다고 생각할 수 있당 . . . .

 

class 클래스 이름
{
멤버변수;
메서드()
    }

 

 

 

 

※클래스와 객체 상관관계

 객체를 여러개 만들기 위해서는 클래스라는 틀이 필요함

 (1) 클래스를 작성한 다음 (2) 클래스로부터 객체를 생성하여 (3) 사용

                                                                                  - 객체를 사용한다는 것 : 

                                                                                       객체가 가지고있는 속성과 기능을 사용

 

클래스

 - 클래스에 존재하는 변수와 메소드는 메모리 공간에 할 당된 형태로 존재하지 않음

 - 접근도 호출도 불가능한, 하나의 틀로서만 역할을 함

 

클래스는 실체(객체)가 아닌 '틀'이므로

클래스 안에 존재 하는 변수에 접근하고, 메소드를 호출하기 위해서는

클래스를 실체화(객체화)시켜야 함 (= new 써서 메모리 할당할 공간을 만드는 것)

 

 

 

객체

 - 메모리 공간에 할당이 이뤄짐

 - 객체를 구성하는 모든 변수는 그 크기대로 메모리 공간 에 할당이 되고, 메소드도 호출할 수 있는 형태로 메모리 공간에 존재하게 됨

 

 

        틀           실체
   --------------------------
   붕어빵 틀       붕어빵
   제품설계도     제품
   자동차설계도  자동차
   --------------------------
      클래스         객체

 

 

 

▷ 클래스로 만든 객체의 중요한 특징

 - 객체마다 고유한 성격을 가진다는 것

 - 동일한 클래스로 만든 객체들은 서로 전혀 영향을 주지 않는다.

 

 

 

 

 

 

 

 

▶클래스 작성

 - 클래스명은 관련있는것으로 지어야 함

 

1. 멤버변수선언

String accId; //계좌번호
String name; //이름
int balance; //잔액

멤버변수 : 객체가 생성될 때 객체의 특징과 속성을 저장하는 곳이다.

  - 멤버변수는 자동으로 디폴트값으로 초기화 됨

  - 멤버변수에는 instance 변수 static 변수(클래스변수)의 형태가 있다. 

 

     - instance 변수 : 객체가 생성될 때 객체들마다 따로 생성되어 고유의 값을 받은 다음 각 객체 속성으로 자리 잡는 변수이다.

 

   

 

      - static 변수 : 객체가 생성될 때 단 하나만 생성되며 모든 객체들이 공유하는 개념의 변수이다

 

 

2. 멤버 메서드 선언

public void deposit(int money) //입금하다 {
balance += money;
}

△ 멤버 메서드 : 특정한 일을 수행하는 "행위"

 - static 메서드(클래스 메서드) : 가지는 객체를 생성하지 않아도 사용 가능

 -  instance 메서드 : 객체를 생성해야만 사용 가능하다. 

 

 

 

 

 

 

 

 

▶객체 생성

 - main () (메인메서드) 위에서 생성

Q. 메인 메서드는 뭔가요 ? 

A. 자바 프로그램의 시작 지점은 main() 메서드이다. 반드시 main() 메서드를 구현한 public class가 하나는 꼭 있어야 한다.

 

 

 

1. 해당클래스의 멤버변수와 메서드를 메모리에 할당 = 인스턴스화

클래스이름 변수명 = new 클래스이름( );

ex ) Scanner sc = new Scanner(System.in);

      Account acc = new Account();

new : 객체 생성을 명령하는 명령어

          - 메모리 공간에 객체가 ( =공간 ) 생성됨 ( = 인스턴스화 )

     객체 - 모든 인스턴스를 대표하는 포괄적인 의미

     인스턴스 - 어떤 클래스로부터 만들어진것인지를 강조하는 보다 구체적인 의미

 

 

2. 객체의 변수 값 저장

acc.balance=100000;

3. 메서드 사용 (=객체의 메서드 호출) 

      - 객체가 가지고 있는 속성과 기능을 사용한다는 뜻

 acc.withdraw(30000);

 - ( . ) 연산자를 이용해서 객체의 변수나 메서드에 접근

 

 

 

 

배열의 메모리 생성과 매우 흡사

'JAVA' 카테고리의 다른 글

[JAVA] Static  (0) 2022.02.23
[JAVA] 생성자 / 접근제한자 / getter,setter  (0) 2022.02.22
[JAVA] 배열  (0) 2022.02.19
[JAVA] 오버로딩 / 재귀호출 메서드 생성 / Math.random  (0) 2022.02.18
[JAVA] 메서드  (0) 2022.02.16