목록Java (116)
오늘은 몰랐으면 내일은 알면 된다
개념 모델링 → 논리 모델링 → 물리 모델링 [관계형 데이터 모델 (Relation Data Model)] : 데이터간 관계에 초점을 둔다. 논리 모델링 물리 모델링 엔터티 타입 테이블 엔터티 행(로우) 속성 열(컬럼) 참고) 엔터티 타입 - 엔터티는 혼용되기 때문에 문맥을 보고 어떤 것을 의미하는지 파악해야 한다. 이름 설명 개체 (entity) 데이터화하려는 사물, 개념의 정보 단위. 관계형 데이터베이스의 테이블(table) 개념과 대응되며 릴레이션(relation)으로 표기하기도 한다. 속성 (attribute) 데이터의 가장 작은 논리적 단위로서 데이터의 종류,특성,상태를 정의한다. 관계형 데이터베이스의 열(column) 개념과 대응된다. 관계 (relationship) 개체와 개체 또는 속성 간..
OS는 실행중인 프로그램을 프로세스(process)로 관리한다. 즉 프로세스란 실행 중인 프로그램을 의미한다. 스레드(thread)는 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다. 멀티 태스킹(multi tasking)은 두가지 이상의 작업을 동시에 처리하는 것을 의미한다. 이 때 운영체제는 멀티 프로세스를 생성해서 처리한다. 하지만 멀티 태스킹 == 멀티 프로세스인 것은 아니다. 프로그램 단위의 멀티 태스킹이 멀티 프로세스라면, 프로그램 내부에서의 멀티 태스킹이 멀티 스레드라고 할 수 있다. 멀티 프로세스들은 서로 독립적이므로 하나의 프로세스에서 오류가 생겨도 다른 프로세스에게 영향을 미치지 않는다. 그러나 멀티 스레드는 프로세스 내부에서 생성되기 때문에, 하나의 스레드가 예외를 발생시키면 ..
여기에 CustomerControl.java 가 있다. 생성자는 다음과 같다. public CustomerControl() { repository = new CustomerRepositoryFile(); success = new SuccessView(); fail = new FailView(); } 이렇게 repository 객체를 직접 생성해서 갖다 넣는 방식은 매우 좋지 않은데, 이유는 해당 객체가 언제 어떻게 바뀔지 알수가 없기 때문이다. 여기서는 DB를 File로 처리하는 객체를 사용했지만, 만일 내일 Array로 처리하는 오더가 떨어지면? 서비스가 돌아가는 걸 중단하고 생성자를 아래와 같이 고친 다음에 재컴파일을 해야할 것이다. public CustomerControl() { repository..
[입출력 스트림] : 단방향으로 데이터가 흐르는 것을 스트림(Stream)이라고 한다. 자바는 입력 스트림과 출력 스트림을 통해 데이터를 입출력한다. 프로그램을 기준으로 데이터가 들어오면 입력, 나가면 출력 스트림이 된다. 프로그램이 다른 프로그램과 데이터를 교환하려면 양쪽 모두 입출력 스트림이 필요하다. 스트림은 다음의 두 종류로 구분할 수 있다. 바이트 스트림 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 입출력할 때 사용 문자 스트림 문자만 입출력할 때 사용 자바는 이러한 입출력과 관련된 라이브러리를 java.io 패키지에서 제공한다. 구분 바이트 스트림(바이트 단위) 문자 스트림(문자 단위) 입력 스트림 출력 스트림 입력 스트림 출력 스트림 최상위 클래스 InputStream OutputStr..
Type / Element Generic이 있다. 예를 들어서 다음과 같이 content 필드를 가지고 있는 box 클래스가 있다고 치자. box는 여러가지 내용물을 저장해야 하므로, content는 특정 타입이 아닌 Object 타입으로 선언했다. public class Box { public Object content; } Box box = new Box(); box.content = 아무 객체; 그렇다면, Object가 모든 객체의 최상위 부모 클래스이기 때문에 위와 같이 아무 객체나 상관없이 Object로 업캐스팅이 되어 대입이 가능하다. 넣을때야 그랬겠지만 문제는 꺼낼때이다. 무슨 객체를 대입했는지 알고 있는 경우에는 다운캐스팅해서 사용할 수 있겠지만, 그렇지 않고 잘못된 다운캐스팅을 했을 경우..
[포장 클래스 Wrapper Class] 기본 타입의 값을 갖는 객체를 의미한다. 포장하고 있는 기본 타입의 값을 변경할 수 없고 단지 객체로 생성하는 데에 목적이 있다. 컬렉션 객체가 객체만 저장할 수 있기 때문에 이러한 클래스가 필요하다. [박싱 / 언박싱] - 박싱(Boxing) : 기본 타입의 값을 포장 객체로 만드는 과정 - 언박싱(Unboxing) : 박싱 된 포장 객체에서 기본 타입의 값을 얻어내는 과정 다음의 사용 예를 참고하자. Integer obj = 100; //박싱 int value = obj; //언박싱 int value = obj + 100; //언박싱 후 연산 [자바 컬렉션 프레임워크 Java Collection Framework] : 자료구조(Data Structure)를 바..
[DTO Data Transfer Object] : 계층간 데이터를 전달하기 위한 객체이다. 주로 View와 Controller 사이에서 데이터를 주고 받을 때 사용한다. getter/setter 를 가지며, 단순히 데이터를 전달하는 역할을 하기 때문에 이외의 비즈니스 로직은 포함하지 않는다(필요가 없음). setter를 가지는 경우 가변 객체로, 생성자를 이용해서 초기화 하는 경우에는 불변 객체로 활용할 수 있다. 불변 객체로 만들 경우에는 데이터 전달 과정에서 변조가 불가능하다. 사용 예) 요청이나 응답값을 전달할 때 [VO Value Object] : 값 자체를 표현하는 객체이다. 객체들의 주소가 달라도 모든 속성값(필드값)이 같으면 동일한 것으로 여긴다. 특정 값 자체를 표현하기 때문에 불변성 보..
말 그대로 이름이 없는 객체를 의미한다. 프로그램에서 한번만 사용되고 버려질 객체를 만들때 활용한다. 클래스 정의 없이 메소드 내에서 바로 클래스를 생성해 인스턴스화 할 수 있고, 따라서 명시적으로 클래스를 선언하지 않기 때문에 쉽게 객체를 생성할 수 있다. 필드값, 로컬 변수값, 매개변수값으로 주로 사용된다. 클래스를 상속하거나 인터페이스를 구현해야만 생성할 수 있고, 클래스를 상속한 경우 익명 자식 객체, 인터페이스를 구현한 경우 익명 구현 객체라고 한다. 예를들어 익명 자식 객체의 경우, 부모 클래스를 상속하는 자식 클래스가 한번만 사용되고 버려진다고 했을 때, 지역 변수처럼 익명 클래스로 정의하고 스택이 끝나면 삭제되게 하는 것이 메모리 활용면이나 유지보수면에서 유리하다. 즉, 언제 이러한 익명 ..
▶컴파일 오류 ▶실행 오류 -> 프로그램 종료 - 개발자가 처리할 수 없는 오류 (ex: 메모리 부족) - 개발자가 처리할 수 있는 오류: 예외(Exception) [예외용 클래스] : java.lang.Exception [예외의 종류] - 일반 예외(Exception) : 컴파일러가 예외 처리 코드 여부 검사 - 실행 예외(Runtime Exception) : 컴파일러가 검사하지 않음 참고) main은 가장 아래에 작성한다. [예외처리방법] try { //예외 발생 예상 코드 } catch(예외처리 변수명) { //예외 처리 } try { } catch(예외처리 변수명) { } finally { //항상 실행 } finally 문은 보통 리소스를 닫는 경우 많이 사용된다. 코드 내에 return 이 있..
시스템에 접속할 수 있는 접속 장치 -> 해당 접속장치의 기능을 구현하는 쪽과 기능을 사용하는 쪽이 병행하여 작업할 수 있게하는 장치 [인터페이스 역할] : 사전적인 의미로 두 장치를 연결하는 접속기를 의미한다. 장치를 객체라고 치면, 인터페이스는 두 객체를 연결하는 역할을 한다. A 객체가 인터페이스를 통해 B 객체의 메소드를 호출한다고 생각해보자. 인터페이스를 통하지 않고 A 객체가 B 객체의 메소드를 직접 호출한다고 하면, B 객체가 C 객체로 변경되었을 때 A의 소스코드를 C 객체를 호출하도록 변경해야 할 것이다. 그러나 A 객체가 인터페이스의 메소드를 호출한다고 하면, A를 따로 고칠 필요 없이 C 객체가 호출됨으로써 변경된 결과를 얻을 수 있을 것이다. 이러한 특징으로 인하여 인터페이스는 다형..