Software Engineering 44

[Java] 제7장 java.lang 패키지

1. 단원 요약 java.lang 패키지는 프로그래밍에 필수적인 기본 클래스들을 제공한다. 별도로 import 하지 않아도 자동으로 포함된다. 포함되는 클래스들은 다음과 같다. 최상위 클래스 Object 문자열 처리용 String, StringBuffer 프로세스/스레드 제어용 Process, Runtime, Thread, ThreadGroup 수학 계산용 Math, StrictMath 예외처리용 Exception, Throwable, Error 포장 클래스(Wrapper Class) Boolean, Character, Byte, Short, Integer, Long, Float, Double 시스템 접근용 System 패키지/클래스 제어용 Package, Class, ClassLoader Object ..

[Java] 제6장 패키지와 예외처리

패키지(Package)정의: 관련있는 타입(클래스, 인터페이스)들의 묶음목적: 이름 충돌 방지, 접근 제어, 필요한 타입을 찾기 쉽게 분류하기 위함Java 기본 API 또한 계층적 패키지로 구성된다.예를 들어, Java 기본 클래스들은 java.lang에, 입출력용 클래스들은 java.io에 모여 있다.java.lang은 묵시적으로 import 되나, 다른 패키지의 클래스를 쓰려면 import java.io.* 처럼 해야 한다.java.lang.String 클래스는 %JAVA_HOME%/jre/lib/rt.jar/java/lang/String.class에 존재한다.커스텀 패키지를 사용하려면 OS의 환경변수 CLASSPATH에 자신이 만든 패키지 위치를 지정해야 한다.커스텀 패키지 만들기(package 구..

[Java] 제5장 제네릭과 람다식

제네릭다양한 타입이나 객체에 대해 동작하게 만든 클래스를 제네릭이라 한다.제네릭을 정의할 때 다양한 타입 파라미터를 선언하고, 사용할 때 필요한 타입을 지정한다.제네릭이 주는 장점은 다음과 같다. 컴파일러에 의한 타입 검사가 가능해진다.명시적 형변환이 불필요해진다.제네릭의 제한 사항은 다음과 같다.기본 자료형을 타입 매개변수에 사용할 수 없다.제네릭 타입의 배열 선언은 불가하다.타입 매개변수를 static 필드에는 사용할 수 없다.타입 매개변수는 클래스 식별자 뒤에 로 표시한다. List l = new ArrayList();l.add("ilovejava"); String s = list.get(0);타입 매개변수는 필드의 타입이나 반환형으로 사용된다.를 다이아몬드 연산자라 하며, 타입 매개변수를 지..

[Java] 제4장 인터페이스와 다형성

1. 추상 메소드(abstract method)추상 메소드는 형식만 정의된 메소드로, 추상 메소드라 한다.추상 클래스만 추상 메소드를 가질 수 있다.추상 메소드는 서브클래스에서 구현되어야 하므로 final 키워드를 쓸 수 없다.2. 추상 클래스(abstract class)추상 클래스는 연관있는 클래스들이 비슷한 메소드 형식을 공유하려고 사용한다.추상 클래스로는 객체를 생성시킬 수 없고, 서브클래스를 구현해야 객체를 생성할 수 있다.추상 클래스는 서브클래스에서 구현되어야 하므로 final 키워드를 쓸 수 없다. 추상 클래스는 구현된 메소드나 필드를 가질 수 있다.3. 인터페이스(interface)인터페이스는 서로 관련 없는 클래스들이 비슷한 기능을 공유하려고 사용하는 것이다.인터페이스는 서로 다른 객체들 ..

[Java] 제3장 클래스와 상속

1. 클래스클래스를 정의할 때는 아래와 같이 한다.[접근제어자] [final | abstract] class 식별자 [extends 슈퍼클래스 | implements 인터페이스] { ... }중괄호 내에는 필드와 메소드를 선언한다.부모 클래스를 확장하는 자식 클래스를 정의할 때 extends 키워드를 사용한다.인터페이스를 구현하는 클래스인 경우 인터페이스에 정의된 메소드를 반드시 구현해야 한다.어떤 클래스가 다른 클래스 내에서 정의된 경우 이를 내부 클래스라 한다.그렇지 않은 클래스를 외부 클래스 또는 톱레벨 클래스라 한다.클래스의 접근제어자를 생략하는 경우 동일 패키지 내에 있는 다른 클래스에서 참조가 가능하다.접근제어자의 생략은 package-private라고 부른다.접근제어자의 범위는 publ..

[Java] 제2장 Java 기본 문법

주석과 식별자한 줄 주석은 '// ...', 여러 줄 주석은 '/* ... */'로 적는다.'/** ... */' 주석은 javadoc 문서이다. 소스코드 맨 위에 작성하며, 클래스에 대한 설명을 기술한다.식별자는 숫자로 시작할 수 없다.식별자에는 특수문자를 쓸 수 없다. 단, '$'와 '_'는 허용된다.식별자는 camelCase로, 클래스 이름은 PascalCase로 표현한다.상수와 변수형상수는 final int CONST_NUM = 0; 처럼 표현한다.상수는 대문자 SNAKE_CASE로 표현한다.boolean, byte (char), short, int, long, float, double을 기본형 변수라 한다.char 타입은 2바이트이다. '\u0000'부터 '\uffff'까지 표현할 수 있다.작은..

[Java] 제1장 Java와 객체지향 프로그래밍

1. 단원 요약 특정 클래스의 인스턴스를 객체라 한다. 기존 클래스를 이용하여 새 클래스를 정의하는 것을 상속이라 한다. 기존 클래스는 슈퍼 클래스, 베이스(기반) 클래스, 상위 클래스, 부모 클래스 등으로 부른다. 상속을 통해 정의된 클래스는 서브 클래스, 파생 클래스, 하위 클래스, 자식 클래스 등으로 부른다. 2. 연습문제 요약 Java에는 포인터 관련 문법이 없다. JVM, System Library등을 통틀어 "Java 플랫폼"이라 한다. Java 소스 파일에 public 클래스가 존재하면, 해당 파일의 이름은 그 클래스의 명칭과 동일해야 한다. Java 소스 파일에 다수의 클래스가 존재하면, 컴파일 시 각 클래스에 대응하는 다수의 .class 파일이 생성된다.

JPA(Java Persistence API) 개념 정리

ORM(Object-Relational Mapping) 기술 일반적인 애플리케이션은 RDBMS에 데이터를 저장하고 가져오는 기능을 가집니다. 그런데 자바 객체를 DB에 저장하려면 JDBC를 통해 테이블 속 레코드로 저장해야 하고, 반대로 테이블에 저장된 레코드를 사용하려면 레코드를 읽어와서 다시 자바 객체로 변환하는 코드가 각 객체마다 필요하게 됩니다. 이처럼 RDBMS와 객체지향 코드 간의 설계 원칙이 다르기 때문에, 이 둘을 매핑하여 객체지향 코드를 작성하는 데 집중할 수 있도록 도와주는 ORM 기술이 생겨났습니다. (Wikipedia ORM 참고자료) 예를 들면, Java SE에 포함되어 있는 JDBC(Java DataBase Connectivity) API를 사용해서 아래처럼 작성한 코드를 Str..

Spring Boot 웹 개발: 시작하기 전에 알아 둘 배경지식

Model 1과 Model 2 아키텍처 웹 애플리케이션의 설계 패턴에는 Model 1과 Model 2(=MVC 패턴)이 있습니다. 저는 JSP를 처음 접했을 때 JSP 파일 내에 화면 표시부터 로직, JDBC와 SQL을 전부 때려박아서 간단한 게시판 기능을 만들었던 적이 있습니다. 그 때는 제가 웹 개발에 손을 댈 생각이 없었기 때문에 그대로 과제물로 제출했던 기억이 납니다. 아무튼, Model 1은 JSP에서 비즈니스 로직 부분을 자바 빈 클래스로 분리하여 개발하는 패턴입니다. 이렇게 하면 프레젠테이션 로직은 JSP와 HTML로, 비즈니스 로직은 자바 빈으로 구현하여 코드의 유지보수성과 재사용성이 좋아집니다. 예를 들어서, 현재 시각을 출력하는 자바 빈을 만들고, 그 기능이 필요한 모든 JSP 페이지에..