본문 바로가기
JAVA SE/이론 및 개념

[20.07.14/Day_05] Java SE / Variable Scope, 객체 초기화 단계, UML Relationship(association, aggregation, composition)

by 파프리카_ 2020. 7. 14.
728x90
반응형

[ Review ]

제어문

 

조건문 if / switch

if(<boolean expression>){

       }

else if(boolean expression>) {

       } else {

        }

 

switch ( variable ) {

    case : a

         --

         break;

    case : b

         --

         break;

     defualt: 

        --

 

반복문  for, while, do while

for(시작 변수 지정, 반복이 끝나는 조건, 변수 증가조건) {

       - 반복문 - }

 

변수 지정

while (반복 끝나는 조건) { 

     - 반복문 - }


[ Variable Scope / 변수 범위 ] 

Variable 변수란 ? 데이터를 저장하는 공간, 변경이 가능하다 !

상수 ↔ 변수 : 정보의 그릇

 

public class Person {
	
	private String name; 
    	// name : 인스턴스 변수 instance variable
    
     // count, j : 지역변수 local variable , 매개변수, 파라미터
    public void eat(int count) {
    	int j = 2;
    }
}

 

public Class Test {
	public static void main(String[] args) {
        // p : 지역 변수 local variable, reference variable
    	Person p = new Person()
    }
}

 

java의 변수 종류

 

1. 인스턴스 변수 instance variable

  * instance : class로부터 실재(實在)화된 것

  •  객체 instance 의 속성 정보를 저장하는 변수 = Object의 value
  •  그 속성정보를 계속 유지하기 위해 사용한다.
  •  클래스 레벨에서 선언, 초기화 된다.
  •  객체마다 서로 다른 정보를 가지고 있기 때문에 사용한다.
  •  Heap 영역에 계속해서 저장이 된다.
    * heap : 동적 메모리 공간

2. 지역 변수 local variable (임시 변수)

  •  특정한 method나 constructor에서만 선언, 초기화 된다.
     해당 메서드가 실행되는 시점에서만 메모리에 저장되었다가 해제된다.
  • 해당 메서드(기능)을 실행할 때만 임시로 사용하고자 사용한다.
  •  Stack 영역에 저장이 된다.
    *stack : 먼저 지정된 값이 가장 나중에 나오고, 나중에 지정된 값이 가장 먼저 나온다.
    (바닥부터 깔려서 차곡차곡 쌓여서, 위에 있는 것부터 꺼는 형태)
    ** Queue: First In, First Out (바닥부터 깔려서, 바닥에 있는 것부터 꺼내는 형태)

3. 클래스 변수 Static variable / Class variable (전역 변수)

  •  변수 앞에 static이 붙어있다.
  • 이후 추가 공부 예정

* 변수를 나누는 이유 ? 메모리를 효율적으로 사용하기 위해서 ! 

   인스턴스 변수는 객체의 속성 정보가 저장되어 정보를 계속 유지하고자 할 때 사용하고,

   지역 변수는 해당 메서드(기능)를 실행할 때만 임시로 사용하고자 할 때 쓴다.

 

참고 )

java 주요 메모리 영역

1 . Stack 영역 : 지역 변수(local variable)가 저장된다.

2.  Heap 영역 : 인스턴스 변수(instance variable)가 저장된다.

3.  Class(Method) area 영역 : Static 변수가 저장된다.


[ Object Initialization  ]

인스턴스 변수는 선언만 해도 기본 초기화가 된다.

String 참조형 데이터타입 null
int 정수형 데이터타입 0
double 실수형 데이터타입 0.0
boolean 논리형 데이터타입 false

객체 초기화 진행의 단계 

   1. 인스턴스 변수의 기본 초기화

   2. 인스턴스 변수의 명시적 초기화

   3 생성자 Constructor에 의한 초기화

 

지역 변수는 명시적 초기화가 필요하다.


[ UML Relationship ]

: UML(통합모델링 언어) 중 Class Diagram의  관계

 

             association > aggregation > composition

 

 

위 관계를 starUML로 class diagram으로 표현하고, 이를 바탕으로 코드를 구현해본다.

UML로 객체 관계를 표현한 것이다.

 

  • association (연관) 관계 : use a
     Person - RentCar
    예) 사람이 렌트카를 이용한다.
    *메서드에서 일시적으로 RentCar객체를 사용하는 관계를 의미한다*

  • aggregation (집합) 관계 :  has a
    Person - SmartPhone
    예) Person사람이 스마트폰을 가지고있다.
    * instance 변수 / null로 처리된다*

  • composition (구성) 관계 : consist of
    Person - Brain / Car - Engine
    예) 사람이 뇌를 가지고 있다. / 자동차는 엔진을 가지고있다.
    * 자동차가 생성되기 위해서는 엔진이 필수적이므로 *

UML로 표현한 composition관계 (Car-Engine)

728x90
반응형