상태는 행동에 영향을 끼치고 행동은 상태에 영향을 끼칩니다. 객체에서 상태를 나타내는 것은 인스턴스 변수 이고 행동을 나타 내는 것은 메소드 입니다. 만약 Dog 클래스에서 객체의 사이즈에 따라 짓는 방법을 다르게 한다면 객체는 상태에 따라 다른 행동을 하는 것입니다. 반대로 메소드 안에서 인스턴스 변수를 수정한다면 행동에 따라 상태가 달라지는 것입니다. 메소드를 호출 할 때 호출하는 위치에서 필요한 값을 전달하는 것 도 가능합니다. 메소드에서 호출할 때 어떤 값을 전달할 수 있습니다. 만약 사각형의 넓이를 구하는 메소드가 있다고 한다면 그 너비와 높이 값을 인자로 전달할 수 있습니다. 이 때 호출 하는 쪽에서는 전달하는 값을 인자 argument 라고 부르고 메소드 안에서는 매개변수 parameter ..
상속을 이용하여 설계할 때는 공통적인 코드를 어떤 클래스에 넣은 다음, 다른 더 구체적인 클래스에 공통적인( 더 추상적인 ) 클래스가 상위 클래스라는 것을 알려주면 됩니다. 한 클래스가 다른 클래스를 상속하는 것을 하위 클래스가 상위 클래스로부터 상속받는다고 말합니다. 자바에서는 상위 클래스를 확장(extend)한다고 이야기 합니다. 삼각형은 도형이다 고양이는 동물이다 외과의사는 의사이다 이렇게 A는 B다 관계에 있으면 A 자리에 오는 클래스가 B 클래스를 확장했다고 할 수 있습니다. 이 A는 B다 관계는 한 방향으로만 흘러야 합니다. 하위 클래스가 상위 클래스를 더욱 더 구체화 한 형식이라면 상속을 활용할 수 있다. 깊이는 얼마든지 깊어질 수 있지만 효율성을 위해서(메모리 낭비) 적당한 깊이를 유지하는..
어린아이들이 가지고 노는 장난감 중에 정해진 모양의 구멍에 같은 모양의 조각들을 끼워넣는 장난감이 있습니다. 동그란 구멍에는 동그란 모양의 조각을 끼워 넣어야 합니다. 자바는 이 조각 끼우기 처럼 변수의 유형(type)을 철저하게 따집니다. 엉뚱한 값을 변수에 대입하면 컴파일러에서 잡아냅니다. 때문에 자바에서 변수를 선언 할 때는 그 유형과 이름이 반드시 필요합니다. 오른쪽에 있는 코드에서 int count는 count 라는 이름을 가진 int 형 변수를 선언 한 것입니다. 변수는 뭔가를 담아두기 위한 컵이라고 생각하면 됩니다. 하지만 담기는 내용물은 그 컵의 유형과 크기에 맞아야 합니다. 같은 모양의 컵이라도 크기가 다를 수 있는 것 처럼 자바의 유형도 그 크기가 다양하며 각각 이름이 붙어 있습니다. ..
클래스를 설계할 때는 프로그램에 들어가야 할 것과 그 프로그램이 어떤 역할을 하는지를 먼저 생각 해 봐야 합니다. 객체지향 프로그래밍에서프로그램에 들어가야 할 것은 객체가 자신에 대해 ‘아는 것’ 이라고 할 수 있습니다. 프로그램이 하는 역할은 객체에서 ‘하는 일’ 이라고 할 수 있습니다. 객체에서 아는 것을 인스턴스 변수라고 하고 객체에서 하는 것을 메소드 라고 합니다. 인스턴스 변수는 객체의 상태를 나타내고 메소드는 객체에서 할 수 있는 일을 나타냅니다. 간단하게 예를 들어 보겠습니다. Dog 라는 클래스를 만든다고 생각 해 보겠습니다. 현실세계에서 개는 더 많은 정보를 가지고 더 많은 행동들을 할 수 있지만최대한 단순화 해서 공통적인 기능만 뽑아 보겠습니다. Dog 라는 클래스에서 Dog 객체에 대..
그림을 참고하면 위에서 아래로 내려가는 과정을 수행한다고 보면 됩니다. 컴파일러에서 만들어진 바이트 코드가 저장된 class 파일을 class loader가 runtime data area에 적재합니다. Runtime data area 는 운영체제 위에서 JVM이 할당받는 메모리 영역입니다. class loader에서 준비한 데이터를 보관하는 저장소라고 할 수 있습니다. 그리고 이것을 Eexcution Engine으로 실행합니다. 클래스 로더는 한꺼번에 모든 클래스를 다 로드하지 않고 요청 되는 순간 동적으로 로드 합니다. 그리고 로딩 매커니즘을 보다 빠르게 동작하고 쉽게 확장할 수 있도록 하기 위해 계층구조로 이루어져 있는 특징이 있습니다. 클래스 로더가 클래스 로딩을 요청받게 되면 캐시, 부모 클래스..
자바의 작동 방식에 대해서 간략하게 알아보도록 하겠습니다. 먼저 자바 언어 규칙에 따라 만들어진 소스 코드가 필요합니다. 이 소스 코드는 컴파일러로 보내지고 컴파일러에서 바이트코드로 변환되어 나오게 됩니다. 컴파일된 소스코드를 Java virtual machine이 실행합니다. 자바 코드의 구조입니다. 가장 먼저 클래스가 있고 그 안에 메서드, 메서드 안에는 선언문들이 존재합니다. 클래스와 메서드, 선언문 이 세가지가 자바 코드를 이루는 기본이라고 할 수 있습니다. 이렇게 코딩 된 코드는 컴파일러로 전달되어 바이트 코드로 바뀌게 됩니다. 컴파일러는 한 언어를 다른 언어로 번역하는 번역기의 역할을 하고 보통은 고급언어를 기계어에 가까운 언어로 바꾸는 역할을 합니다. 프로그래밍 언어는 대부분 인간이 이해할 ..
지난시간까지 PageController를 POJO로 바꾸는 데 까지 성공했다. POJO 객체는 톰캣에 올라가지 않기 때문에 직접 객체를 만들어서 Listener에서 attribute에 등록하는 절차를 거쳤다. 이 때 PageController interface를 구현해서 객체를 관리했는데 이제 인터페이스를 구현하는 대신에 애노테이션으로 요청핸들러를 표시하여 프론트 컨트롤러가 찾게 만든다. 요청핸들러(Request Handler) : 클라이언트 요청이 들어왔을 때 호출되는 메서드. 즉 클라이언트 요청을 처리하는 메서드이다. 1) annotation package를 만들고 RequestMapping annotation을 생성한다. RequestMapping annotation에 @Retention 애노테이션..
- Total
- Today
- Yesterday
- Markov
- html
- Spring in Action
- was
- 야근
- 유지보수
- 디자인패턴
- GROUP BY
- Warning
- 코딩의 기술
- CONVENTIONS
- restful api
- 마르코프 연쇄
- 몰라서망신
- 클린코드
- 로그
- REST API
- 크롬
- RESTful
- 전략패턴
- 동적계획법
- 마르코프
- java
- 문장 생성기
- Count
- 자바스크립트 개론
- 자바스크립트개론
- markov chain
- DP
- 경고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |