class는 두가지 타입으로 설계할수있다.
1. DataType 측면: 새로운 자료형을 만드는 (설계하는) 도구 = 모델링도구
2. OOP(객체지향) 측면: 객체의 상태정보와 행위정보를 추출하여 캡슐화 하는 도구
Model: class를 Mode이라고도 부른다 (역할이 정해지므로)
Model의 종류 (3가지는 거의 대부분 만들게 되어있다)
1. DTO(Data Transfer Object): 데이터 구조, 데이터를 담는 역할, 이동하기 위해서 데이터를 담는다.
- VO(Value OBject) : 객체를 담아서 하나의 값(덩어리)으로 취급한다는 의미
2. DAO(Data Access Object): 데이터를 처리하는 역할(비즈니스 로직), 데이터베이스와 CRUD(Create, read, update and delete)하는 역할
3. Utility(Helper Object): 도움을 주는 기능을 제공하는 역할(날짜, 시간, 통화, 인코딩 등)
앞으로 사용하게 될 class들: API(Application Programming Interface)
1. Java에서 제공해주는 class 들
- String, System, Integer, ArrayList, Map 등
2. 만들어 사용하는 class 들(DTO, DAO, Utility)
3. 1, 2번이 아닌 다른 사람이 만들어 제공해주는 class 들
- Gson, Jsoup, POI, iText 등
파트 1 에서는 데이터의 구조에 대해서 집중적으로 설명했지만 파트 2에서는 동작의 측면에서 어떻게 클래스를 만들어서 활용할지.
자바에서 문자열을 저장할수있는 기본 자료형은 없다. 별도로 자바에서 문자열을 조작하기 위해서는 String이라는 객체를 사용하여야한다.
만들어진 클래스를 사용하려면 String str = new String("APPLE");
다음과 같이 사용할 수 있다.
String 클래스가 담긴 메모리 안에 Apple은 어딘가에 만들어지고 str은 그것을 가리키게 된다.
String에는 동작 메소드를 알아야 조작할 수있는데, 관련된 메소드가 메모리에 같이 올라와있다
예를들어서 APPLE을 모두 소문자로 바꾸고싶다면 String이 제공하는 그것을 해주는 메소드를 사용하면된다.
System.out.printlm(str.toLowerCase());
다음과 같이 toLowerCase를 사용하면 apple로 바뀔것이다
String이라는 클래스는 그냥 불렀는데 왜 에러가 나지않을까?
String이나 System은 API를 보면 java.lang에 있는데 원래라면 java.lang.String st = new java.lang.String("APPLE");
이라고 해야할것이다
그래서 자바에서는 이것을 쓰지 않고, import java.lang.*;
처럼 import라는 구문을 이용해서 불편함을 없앤다.
java.lang.*
은 빈번히 사용하기 때문에 디폴트 패키지로 되어있어 생략이 되어있다. 그래서 import java.lang.*
을 쓰지 않더라도 자연스럽게 String st = new String("APPLE")
이라고 쓸 수 있는 것이다.
예를들어 MyUtil
이라는 클래스를 만들고 MyUtil my = new MyUtil();
이라고 부르면 사용할 수 없을것이다. 왜냐면 MyUtil은 기본 패키지가 아니기 때문에 따로 import를 시켜줘야한다.
Maven이라는 자바용 프로젝트 관리도구를 통해서 API 를 쉽게 관리 할 수 있기도 하다.
+
를 누르고 Library 를 누른다.