Skip to the content.

- 학습 목표 달성 확인 목록

- [] UML이 무엇이고 어떤 용도로 사용하는지 아는가?

Unified Modeling Language의 약자로 소프트웨어 공학에서 사용되는 표준화된 범용 모델링 언어이다.

주로 객체 지향 프로그래밍에서 사용되며 시스템의 구조적 청사진을 시각화한 것이다.

- [] 의존 객체(dependency)가 무엇인지 이해하는가?

하나의 객체가 다른 객체의 의존성을 제공하는 테크닉이다.

의도는 객체의 생성과 사용의 관심을 분리하는 것이다.이는 가독성과 코드 재사용률을 높혀준다.

- [] GRASP 패턴이 무엇인지 아는가?

객체에 책임을 할당해야 하는데 그 할당하는 패턴 또는 원칙을

General Responsibility Assignment Software Patterns , GRASP 패턴, 또는 원칙 이라고 부른다.

Responsibility Assignment-책임할당->클래스를 정의할 때 어떤 메서드를 둘것인가?->역할이 지정된다.

Software Patterns-소프트웨어 작성에 흔히 사용되는 설계기법->노하우=경험을 바탕

===>결국 다 합쳐서 설명하면 클래스를 정의하는 바람직한 방법을 말한다

그중에서

Information Export:정보를 사용하는 쪽에 책임을 맡겨라.

Creator:객체를 사용하는 쪽 생성을 맡겨라.

Low Coupling:클래스간의 관계를 줄여라.

High Cohesion:가능한 한 역할만 수행하게 해라.

- [] Information Expert 패턴에 대해 이해하는가?

Information Export:정보를 사용하는 쪽에 책임을 맡겨라.

- [] domain, vo(value object), dto(data transfer object) 클래스의 의미를 이해하는가?

개발자가 시스템 목적에 맞춰서 새로 정의한 데이터 타입

domain=value object(VO)=data transfer object(DTO)

- [] 스태틱 필드의 사용 범위와 그 한계를 이해하는가?

스태틱이 붙으면 주로 클래스들이 할당하며 GC가 관여하지 않고 모든 객체가 메모리를 공유한다는 특징이 있다.

class Number{
    static int num = 0; //클래스 필드
    int num2 = 0; //인스턴스 필드
}

public class Static_ex {
	
    public static void main(String[] args) {
    	Number number1 = new Number(); //첫번째 number
    	Number number2 = new Number(); //두번쨰 number
    	
    	number1.num++; //클래스 필드 num을 1증가시킴
    	number1.num2++; //인스턴스 필드 num을 1증가시킴
    	System.out.println(number2.num); //두번째 number의 클래스 필드 출력
    	System.out.println(number2.num2); //두번째 number의 인스턴스 필드 출력
    }
}

//결과
1
0
결과의 이유는 static이라서 하나의 저장공간을 공유하기에 같은 값을 가지고 있다.

static이 붙은 변수는 해당 클래스의 모든 객체들에 의해 공유된다.

- [] ‘기술 부채’가 무엇인지 설명할 수 있는가?

현 시점에서 더 오래 소요될 수 있는 더 나은 접근 방식을 사용하는 대신 쉬운 솔루션을 채택함으로써

발생되는 추가적인 재작업을 비용을 반영하는 소프트웨어 개발의 한 관점이다.

금전적인 채무와 비유될 수 있다.