객체지향(Java)

객체지향(Java)

Java 자바 기술면접 질문 정리 (2)

HashMap, HashTable, ConcurrentHashMap 차이 모두 Map 인터페이스의 구현체 HashMap - key와 value에 null을 허용한다. - 동기화를 보장하지 않는다. - thread-safe하지 않아 싱글 스레드 환경에서 사용하는 것이 좋다. - 속도는 빠르지만, 신뢰성과 안정성이 떨어진다. HashTable - key와 value에 null을 허용하지 않는다. - 동기화를 보장한다. - thread-safe하기 때문에, 멀티 스레드 환경에서 사용할 수 있다. - 데이터 무결성을 보장한다. ConcurrentHashMap - key와 value에 null을 허용하지 않는다. - 동기화를 보장한다. - thread-safe하기 때문에, 멀티 스레드 환경에서 사용할 수 있다. ..

객체지향(Java)

Java 자바 기술면접 질문 정리 (1)

자바 컴파일 과정 1. 개발자가 java 코드 생성 2. build 3. javac를 통해 .java 파일을 .class 파일로 바꾼다. 4. class loader를 통해 JVM(Java Virtual Machine) 내로 로드된다. 5. 실행엔진을 통해 컴퓨터가 읽을 수 있는 기계어로 해석되어 Runtime Data Area에 배치된다. 컴파일러 vs 인터프리터 공통점은 둘 다 사람이 읽을 수 있는 프로그래밍 언어를 컴퓨터가 읽을 수 있는 기계어로 변환해준다. 차이점은 컴파일러는 한꺼번에 컴파일을 하기 때문에 컴파일 시간은 오래 걸리지만 실행 단계에서 이미 기계어로 변환된 파일을 실행하면 되므로 실행 속도는 빠르다. 하지만 컴파일 후에 에러를 알려주기 때문에 에러 수정이 비교적 어렵다. 인터프리터는 ..

객체지향(Java)

객체지향의 사실과 오해 부록A. 추상화 기법 (2)

객체지향 프로그래밍 언어를 이용해 타입을 구현하는 가장 보편적인 방법은 클래스를 이용하는 것이다. 클래스는 타입을 구현하는 용도 외에도 코드를 재사용하는 용도로 사용되기도 한다. 클래스 외에도 인스턴스를 생성할 수 없는 추상 클래스나 인터페이스를 이용해 타입을 구현할 수도 있다. 일반적으로 동일한 범주에 속하는 객체는 동일한 클래스의 인스턴스여야 한다. 계층의 상위에 위치한 범주를 계층의 하위에 위치한 범주의 일반화라고 하고, 계층의 하위에 위치한 범주는 계층의 상위에 위치한 범주의 특수화라고 한다. 내연의 관점에서 특수한 타입을 일반적인 타입의 속성을 포함한다. 외연의 관점에서 서브타입은 슈퍼타입의 부분집합이다. 프로그래밍 언어를 이용해 일반화와 특수화 관계를 구현하는 가장 일반적인 방법은 클래스 간의..

객체지향(Java)

객체지향의 사실과 오해 부록A. 추상화 기법 (1)

추상화는 도메인의 복잡성을 단순화하고 직관적인 멘탈 모델을 만드는 데 사용할 수 있는 가장 기본적인 인지 수단이다. 도메인에 존재하는 개념들을 구조화하고 단순화하기 위해 다양한 추상화 기법을 사용한다. 객체지향의 가장 큰 장점은 동일한 추상화 기법을 프로그램의 분석, 설계, 구현 단계에 걸쳐 일관성 있게 적용할 수 있다는 점이다. 객체를 분류하고 범주로 묶는 것은 객체들의 특정 집합에 공통의 개념을 적용하는 것을 의미한다. 개념이란 속성과 행위가 유사한 객체에 공통적으로 적용되는 관념이나 아이디어다. 세상에 존재하는 객체에 개념을 적용하는 과정을 분류라고 한다. '수많은 개별적인 현상들'을 객체라고 하고, '하나의 개념'을 타입이라고 한다. 타입을 객체의 분류 장치로서 적용할 수 있으려면 다음과 같은 세..

객체지향(Java)

객체지향의 사실과 오해 4장. 역할, 책임, 협력

4장. 역할, 책임, 협력 협력이라는 것은 객체의 행동 방식을 결정한다. 개별 객체가 아니라 객체들 사이에 이뤄지는 협력이 중요한 것이다. 객체의 모양을 빚는 것은 객체가 참여하는 협력이다. 어떤 협력에 참여하는지가 객체에 필요한 행동을 결정하고, 필요한 행동이 객체의 상태를 결정한다. 협력 -> 행동 -> 상태 4-1. 협력 4-1-1. 요청하고 응답하며 협력하는 사람들 협력의 본질은 요청과 응답으로 연결되는 사람들의 네트워크다. 협력은 한 사람이 다른 사람에게 도움을 요청할 때 시작된다. 협력은 다수의 연쇄적인 요청과 응답의 흐름으로 구성된다. 4-1-2. 누가 파이를 훔쳤지? 객체지향의 세계는 동일한 목적을 달성하기 위해 협력하는 객체들의 공동체이다. 객체지향의 관점에서 재판 장면에 등장하는 모든 ..

화서동 병아리
'객체지향(Java)' 카테고리의 글 목록