JAVA JAVA 2023. 11. 8. [JAVA] 상속과 조합 상속과 조합 어떻게 다를까? 상속 상속은 말 그대로 A라는 클래스가 부모가 되어 모든 역할과 구현을 B라는 클래스에게 노출하는 것이다. 따라서 B는 A와 강하게 결합된다. 상속은 반드시 is-A관계가 성립할 때만 사용되어야 한다. is-A 'B는 A다'가 성립해야 한다. 따라서 A의 캡슐화는 깨지고, 두 객체는 강하게 결합된다. 동물과 사자를 예로 들면, '사자는 동물이다'는 성립한다. 따라서 B는 반드시 A에서 파생되는 클래스여야 한다. 조합 조합은 위 A라는 특정 역할을 수행하는 객체를 B에서 멤버로 가지는 것을 말한다. 이때 B는 필요로 하지만, 본인의 역할을 벗어난 작업을 A에게 요청할 것이다. B는 A에게 요청을 보내고 응답을 받는 유연한 협력 관계를 설계할 수 있다. A는 B에게 필요한 역할을.. JAVA 2023. 10. 28. [JAVA] VO(Value Object), 원시값 포장 개요 VO와 원시값 포장 객체는 유사한 점이 있지만, 다른 맥락에서 생긴 개념이다. 먼저 VO는 객체를 '값'으로 보기 위해서 만들어진 개념이다. 특정 객체 또는 값에게 타입을 부여해 해당 객체가 어떤 값을 표명하는지 쉽게 알 수 있게 해 준다. 이외에도 많은 이점을 누릴 수 있다. 원시값 포장 객체는 이름 그대로 primitive 타입을 포장한 객체다. 이 개념이 나오게 된 이유는 해당 값에 대한 책임을 분리하기 위해서이다. VO(Value Object) VO는 아래 3가지 조건을 만족해야 한다. 1. 동등성 2. 불변성 3. 자기 검증 동등성 VO는 한 가지 이상의 멤버를 가질 수 있다. 그리고 이를 값으로 보기 때문에 두 객체의 값이 같다면 같은 객체로 본다. 동등성이 보장되는 것이다. [JAVA].. JAVA 2023. 10. 27. [JAVA] equals(), hashCode() 재정의(동등성과 동일성) 개요 각 메서드를 보기 앞서 개념을 먼저 살펴보자. 동등성 동등하다는 것은 논리적인 지위가 같다는 것을 뜻한다. 그리고 이 논리적인 지위는 개발자가 결정한다. 아래 Person 클래스로 예를 들어보자. class Person{ String name; String personality; } 두 Person이 있다고 할 때 이름만 같을 경우 두 Person을 같다고 판단할지, 성격도 같아야 두 Person이 같다고 판단할지 여기에 대한 기준은 개발자가 정한다. 이렇게 논리적인 기준이 같은지 판단하는 것을 동등성 비교라고 한다. 그리고 java 메서드로는 equals()를 사용한다. 동일성 동일하다는 것은 모든 것이 일치한다는 것을 뜻한다. '모든 것'에는 내부 값, 주소 등이 포함된다. java에서는 == .. JAVA 2023. 6. 13. [JAVA] JVM 메모리 영역 JVM이 사용하는 메모리 영역에 대한 공부 기록이다. 개요 JVM(Java Virtual Machine)이란?? 자바가 실제로 구동하는 환경 운영체제별로 프로그램을 실행하고 관리하는 방법이 다르기 때문에 원래는 운영체제별로 자바 프로그램을 별도로 개발해야 한다. 하지만 JVM은 언어 그대로 가상 환경에서 구동된다. JVM의 주요 역할은 운영체제와 자바 프로그램을 중계함으로써 하드웨어나 운영체제에 따라 달라질 수 있는 호환성의 문제를 해결한다. 덕분에 개발자는 운영체제와 상관없이 자바 프로그램을 개발할 수 있다. 바이트 코드는 모든 JVM에서 동일한 실행 결과를 보장하지만, JVM은 운영체제에 종속적이다. 따라서 JVM은 운영체제에 맞게 설치되어야 한다. JVM은 JDK(Java Development Ki.. JAVA 2023. 6. 2. [JAVA] 자바는 항상 Call-by-value로 동작한다? 자바를 처음 공부하면서 call-by-value와 call-by-reference에 관한 궁금증이 생겼다. 이에 관해 공부한 기록이다. Call-by-value vs Call-by-reference 두 개념은 어떻게 다를까? 두 개념 모두 변수가 호출되는 방식에 관한 개념이다. Call-by-value는 호출자와 피호출자가 각각 독립적인 두 변수를 가진다. Call-by-reference는 호출자와 피호출자가 동일한 변수를 사용한다. 호출자와 피호출자가 동일한 변수를 사용한다는 것은 조금 이해하기 힘든 표현일 수 있다. 그 이유는 Call-by-reference라는 개념 자체가 포인터와 결부되어 있기 때문이다. 내가 이해하기로는 Call-by-value는 그릇에 비유될 수 있다. Stack 메모리에 변수.. 이전 1 다음