Scanner 클래스 java.util 패키지의 Scanner 클래스를 이용하면 콘솔로부터 기본 타입의 값을 바로 읽을 수 있다. Scanner 객체를 생성하려면 다음과 같이 생성자에 System.in 매개값을 주면 된다. Scanner scanner = new Scanner(System.in) Scanner 메소드들은 콘솔에서 데이터를 입력한 후 Enter키를 누르면 동작하도록 되어 있다. 다음 예제를 보자 public class ScannerExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("문자열입력: "); String str = scanner.ne..
트랜잭션(Transaction)트랜잭션은 DBMS가 데이터베이스를 다룰 때 사용하는 작업의 단위다. 트랜잭션은 데이터베이스의 무결성을 유지하기 위해 원자성, 일관성, 고립성, 지속성의 성질을 갖는다. DBMS는 트랜잭션이 이러한 성질을 유지할 수 있도록 지원한다. 데이터베이스에서 트랜잭션을 정의하는 이유는 다음과 같다데이터베이스에서 데이터를 다룰 때 장애가 일어나는 경우가 있다. 트랜잭션은 장애 시 데이터를 복구하는 작업의 단위가 된다.데이터베이스에서 여러 작업이 동시에 같은 데이터를 다룰 때가 있다. 트랜잭션은 이 작업을 서로 분리하는 단위가 된다. 트랜잭션의 수행트랜잭션은 전체가 수행되거나 또는 전혀 수행되지 않아야 한다(all or nothing). 예를 들어 은행 업무를 보는데 A계좌에서 돈을 이..
무결성 제약조건 데이터베이스에 저장된 데이터는 결함이 없어야 하며 질의에 대해 신뢰성 있는 답을 제공해야 한다. 그래서 데이터를 저장하는 데 있어서 데이터베이스는 일관성을 유지하고 중복을 제거하는 등 데이터의 신뢰도를 유지해야 한다. 따라서 데이터의 삽입, 삭제, 수정 시 여러 가지 제약조건이 따른다. 데이터 무결성(integrity)은 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말한다. 일관성과 정확성을 잃어버린 데이터베이스는 정보로서의 가치에 심각한 문제가 있는 것이다. 일관성과 정확성을 가지고 구축된 데이터베이스가 계속해서 무결성을 유지하려면 투플의 삽입, 삭제, 수정 시 데이터의 제약조건 준수 여부를 확인하여야 한다. 데이터의 삽입, 삭제, 수정 시 필요한 기본적인 제약조건을 D..
키(key)키는 데이터베이스에서 데이터의 사용 및 관계 표현에 가장 중요한 개념이다. 키라는 용어는 무엇인가를 유일하게 식별한다는 의미가 있다. 관계 데이터베이스에서 키는 릴레이션에서 특정 투플을 식별할 때 사용하는 속성 혹은 속성의 집합이다. 즉 키가 되는 속성은 반드시 값이 달라서 투플들을 서로 구별할 수 있어야 한다. 즉 아래 그림에서 키는 고객번호, 주민번호, 핸드폰이 될 수 있다 3개다 절대로 중복되는 값이 없어 투플들을 식별할 수 있기 때문이다. 하지만 아래 그림처럼 투플을 식별할 수 있는 속성이 없다. 그래서 (고객번호, 도서번호)나 (고객번호, 주문일자)와 같은 집합을 키로 사용할 수 있다. 슈퍼키(super key)슈퍼키는 투플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합을 ..
관계 데이터 모델관계 데이터 모델은 수학의 집합이론에 근거하고 있어 튼튼한 이론적인 토대를 갖고 있다. 또한 관계 데이터 모델이 적용된 SQL 언어는 비절차적인 언어로 원하는 데이터를 쉽게 표현하는 장점이 있다. 릴레이션(relation)관계 데이터 모델을 이해하기 위해서는 우선 가장 중요한 용어인 릴레이션에 대한 이해가 필요하다. 릴레이션은 행과 열로 구성된 테이블을 말한다. 릴레이션은 번역하면 친척, 관계라고 하지만 relationship도 관계여서 충돌을 피하기 위해 릴레이션이라고 그대로 부르고 있다. 그러나 relational data model, relational database 등은 관계 데이터 모델, 관계 데이터베이스라고 한다. 릴레이션 스키마와 인스턴스릴레이션은 스키마와 인스턴스로 이루어..
컬렉션 프레임워크(Collection Framework)컬렉션 프레임웍이란 데이터를 저장하는 클래스들을 표준화한 설계를 뜻한다. 컬렉션은 다수의 데이터, 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다. 애플리케이션을 개발하다 보면 다수의 객체를 저장해 두고 필요할 때마다 꺼내서 사용하는 경우가 많다. 만약 10개의 Product 객체를 저장해 두고, 필요할 때마다 하나씩 꺼내서 이용한다고 가정할때 배열을 사용할 것이다 배열은 쉽게 생성하고 사용할 수 있지만, 저장할 수 있는 객체 수가 배열을 생성할 때 결정되기 때문에 불특정 다수의 객체를 저장하기에는 문제가 있다. 물론 배열의 길이를 크게 생성하면 되지만, 이것은 좋은 방법이 될 수 없다. 배열의 또 다른 문제점은 객체를 삭제했을 때..
접근제한자접근 제한자는 pulbic, procted, default, private와 같이 네 가지 종류가 있다. 이중에서 protected는 상속과 관련이 있다. public < protected < default < private 접근 제한이 강화 접근 제한 적용할 내용 접근할 수 없는 클래스 public 클래스, 필드, 생성자, 메소드 없음 protected 필드, 생성자, 메소드 자식 클래스가 아닌 다른 패키지에 소속된 클래스 defalut 클래스, 필드, 생성자, 메소드 다른 패키지에 소속된 클래스 private 필드, 생성자, 메소드 모든 외부 클래스 protected는 public과 default 접근 제한의 중간쯤에 해당한다. 같은 패키지에서는 default와 같이 접근 제한이 없지만 다른..
패키지(package)패키지란, 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능하므로, 자신만의 패키지 체계를 유지함으로써 다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다. 지금까지는 단순히 클래스 이름으로만 클래스를 구분 했지만 클래스의 실제 이름(full name)은 패키지명을 포함한 것이다. 예를 들면 String클래스의 패키지명을 포함한 이름은 java.lang.String이다. 즉, java.lang패키지에 속한 String클래스라는 의미이다. 그래서 같은 이름의 클래스 일..
예외 처리 코드프로그램에서 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 코드를 예외 처리 코드라고 한다. 자바 컴파일러는 소스 파일을 컴파일할 때 일반 예외가 발생할 가능성이 있는 코드를 발견하면 컴파일 오류를 발생시켜 개발자로 하여금 강제적으로 예외 처리 코드를 작성하도록 요구한다. 그러나 실행 예외는 컴파일러가 체크해주지 않기 떄문에 예외 처리 코드를 개발자의 경험을 바탕으로 작성해야 한다. 예외 처리 코드는 try-catch-finally 블록을 이용한다. try-catch-finally 블록은 생성자 내부와 메소드 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처리를 할 수 있도록 해준다. try-catch-finally 블록 작성..
프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 경ㄹ과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생시점에 따라 컴파일 에러(compile-time error)와 런타임 에러(runtime error)로 나눌 수 있는데 컴파일 시에 발생하는 에러는 컴파일 할 때 발생하는 에러이고 프로그램의 실행도중에 발생하는 에러를 런타임 에러라고 한다. 이 외에도 논리적 에러(logical error)가 있는데, 컴파일도 잘되고 실행도 잘되지만 의도한 것과 다르게 동작하는 것을 말한다. 자바 에러(Error)와 예외(Exception) 자바에서는 실행 시 발생할 수 있는 프로그램 오류를 에러와 예이 두 가지로 구분하였다. 컴퓨터 하드웨어..
비주얼 스튜디오 한 프로젝트에서 한개 소스 실행방법 비주얼 스튜디오로 C언어를 배우다보면 여러개의 예제 소스를 한 프로젝트에서 관리하는 경우가 있다. 문제는 애초에 그렇게 할수가없다. 왜냐하면 한 프로젝트에는 하나의 main함수만 필요하기 때문이다. 그래서 해결방법은 실행시킬 예제의 소스만 main를 가지고 있어야 한다. 아래 예제는 실행시키지 않은 다른 소스들은 main함수명을 바까서 해결한 방법이다. 위에서 보듯이 hello1, 2, 3 c 파일이 있다고 칠 때 각각 main함수가 있어 hello1만 실행시키려고 할때 저런 오류가 뜨면서 실행이 안된다 그래서 hello2 hello3 의 코드를 전부 주석으로 막고 실행시켰는데 그냥 다른 C파일들의 main함수명만 바까주면 된다는 걸 알았다. 즉 이런식..
C언어 콘솔 응용 프로젝트 생성 방법 Visual Stdio 2017 community C언어만 설치한 상태에서 프로젝트 생성을 하였는데 C언어 공부를 하기 위해 어떻게 프로젝트 생성을 해야하는지 많이 해맸다. 위에서 보듯이 windows 데스크톱 메뉴에서 windows 데스크톱 마법사를 선택하고 확인 을 누른다. 그러면 이 창이 뜨는데 빈 프로젝트를 선택하고 SDL 검사는 체크 해제해주는게 좋다. 이걸 체크하면 빌드시 scanf 를 사용할때 뒤에 _s를 붙여서 사용하라고 권장한다. 귀찮으므로 왠만하면 SDL을 체크해제 하자 확인을 누르면 프로젝트 생성이 완료된다. 오른쪽 프로젝트 메뉴에서 소스파일 우클릭후 -> 추가 -> 새 항목을 선택한다. 이름은 확장자가 기본으로 cpp로 되있을텐데 c를 공부하기 ..