본문 바로가기

Programming/JAVA

MVC Design Pattern MVC라는 것이 무엇인가?? 처음에 막상 이런 단어를 보면 그냥 막막하다;;; 어떤 웹 애플리게이션을 개발하는데 있어서 디자인 패턴이 필요하다??? 나로서는 디자인은 미대 학생들이나 찾는 단어인 줄 알았는데;;; 먼저 핵심부터 이야기해 보자면 MVC는 비즈니스 로직과 프리젠테이션 로직을 분리하겠다는 것입니다.;;;-_-;;;; 그럼 여기서 바로 의문하나;;; 비즈니스 로직과 프리젠테이션 로직이 머냐는 거죠;;; 이것 또한 처음 듣기는 마찬가지..... 먼저 프리젠테이션 로직은 단어에서도 알 수 있듯이 보여준다는 거죠.... 누구에게?? 바로 사용자에게!! 그럼 반대로 비즈니스 로직은 무엇일까?? 저는 나름대로 추측해보길... "그럼 사용자의 눈에 보여질 필요가 없는것??? " 라고 할 수 있죠 ㅎㅎ 보통.. 더보기
컨테이너란?? 무엇일까? 컨테이너란 무엇인가? 일단 컨테이너는 servlet을 실행하고 관리하는 역할을 합니다. 개발자가 해야하는 역할을 컨테이너 자신이 도맡아 함으로써, 개발자가 해야하는 일을 대폭 줄여줍니다. 컨테이너는 개발자가 웹서버와 통신하기 위하여 소켓을 생성하고, 특정 포트에 리스닝하고, 스트림을 생성하는 등의 복잡한 일들을 할 필요가 없게 해줍니다. 컨테이너는 servlet의 생성부터 소멸까지의 일련의 과정을 관리하는 역할을 합니다. 컨테이너는 요청이 들어올 때마다 새로운 자바 스레드를 하나 만듭니다. 이 말은 곧 스레드를 생성하고 운영하는 부분을 컨테이너가 담당해주니 개발자가 이 부분에 대한 부담을 줄일 수 있게 해준다는 거죠 ^^)/ 그럼 컨테이너란 무엇이란 말인가??;;; 앞에서는 어쩌다 보니 역할에 대한 내용.. 더보기
eclipse .class 파일 생성위치와 .java 위치 변경하기 위의 Properties를 클릭합니다. Add Folder 버튼을 클릭하여 소스파일이 위치할 경로를 지정해 주고, 아래의 Browse 버튼을 클릭하여 컴파일된 후 생성되는 클래스 파일이 위치할 경로를 지정해줍니다. 많은 도움이 되시길~~^^~~ 야용이~ 더보기
is a 와 has a 의 관계 3. Is a , Has a 관계 기존의 클래스의 특성을 가지는 새로운 클래스를 만드는 방법은 크게 2 가지가 있다. 기존의 클래스를 상속받아 만드는 방법과 기존의 클래스를 클래스 멤버로 가지는 방법이다. 첫번의 방법을 Is a , 관계라 하고 두 번째의 방법을 has a 라고 한다. 이 개념을 명확히 해서 클래스 설계에 적용하면 고민하지 않고 상속과 멤버의 결정을 내릴 수 있다. 사람 학생 군인 회사원 대학생 고등학생 중학생 3.1 Is a 관계 이 방법은 “ 새로운 클래스가 기존의 클래스의 한 종류이다.(is a)” “ New Object is a type of a original class.” 라는 말이다. 이 개념이 성립하면 새로운 클래스는 기존의 클래스를 extends 를 사용해 상속 받아만든다.. 더보기
interface와 abstract의 차이점 1. 공통점: 우선 아래 소스1을 보시면, 전형적인 interface,와 abstract 클래스를 나타내고 있습니다. 1) abstract와 interface는 그자체가 instance화 될수가 없습니다. 즉, TestInterface t = new TestInterface(), TestAbstract a = new TestAbstract(); 둘다 컴파일을 해보면, 에러를 발생시킵니다. 2) Prototye만 있고 Body가 없는 메소드를 멤버함수로 가집니다. 소스1에서 보시는 봐와 같이 TestInterface, TestAbstract 는 함수 선언부는 존재하지만, 내용이 없는 함수들을 포함하고 있습니다. 3) abstract,interface 클래스를 사용하려면, abstract,interface .. 더보기
static에 대한 개념 자바를 한번쯤 공부해본사람이라면 static키워드를 모르지는 않을 것입니다. 하지만, 바르게 알고 있는 사람들은 그리 많지 않습니다. 자바경력자를 면접볼 때 static키워드에 대해서 질문하곤 합니다. 면접관 : static키워드에 대해서 설명해보세요. 응시자 : static키워드를 쓰면, 객체를 생성하지 않고도 변수나 함수를 사용할 수 있습니다. 면접관 : 왜 static키워드를 쓰나요? 응시자 : 객체를 생성하지 않아도 되니까 편리하고 속도도 빠릅니다. 면접관 : 그렇다면 모든 변수와 함수에 static을 붙이는 것이 좋겠네요? 응시자 : 가능한한 static을 붙이는 것이 좋다고 생각합니다. 면접관 : 어떤 경우에 static을 붙일 수 있고, 어떤 경우에 static을 붙일 수 없습니까? 응시자 .. 더보기
overriding and overloading 오버라이딩(overriding) - 함수의 이름이 같아야 한다. - 상위 클래스에 동일한 이름의 메소드가 있어야 한다. - 모든 파라미터의 타입과 개수가 같아야 한다. - 리턴 값이 같아야 한다. - 상위 클래스에서 final이나 static으로 선언된 메소드는 overriding될수 없다. - 오버라이딩은 같은 타입의 파라미터를 받아서 같은 타입의 결과를 돌려 주어야 한다. 오버로딩(overloading) - 함수의 이름이 같아야 한다. - 같은 클래스에 함수가 존재하거나 파라미터의 타입이나 개수가 적어도 하나 이상은 달라야 한다. - 리턴 값은 상관이 없다. - 상위 클래스에 정의된 메소드보다 더 넓은 범위의 접근 제한자를 갖어야 한다. - 상위 클래스에 정의된 메소드가 던지는 Exception 와 .. 더보기
assertion assertion 작성된 코드가 정상적으로 작동하는지에 대해 검증하는 디버깅용 코드 입니다. assert 표현식1; assert 표현식1 : 표현식2; 두가지방식으로 사용됩니다. 첫번째는 표현식이 false라면 assertionError를 발생하구요. 두번째는 표현식 표현식2를 에러로 발생 시킵니다. if문과는 반대 개념이죠. false여야만 에러를 발생 시킵니다. ***************************************************** Assert문으로 실행결과가 ture일때 ***************************************************** 소스==================================== public class TestScjp1.. 더보기
default constructor 예를 들어, Constructor에 대해 살펴보죠. Java에서는 인자없는 생성자(디폴트 생성자라고 합니다)가 있습니다. 이것은 명시적으로 지정하지 않는 경우 바이트코드 컴파일타임에 자동으로 inlined 됩니다. class A { } 여기서 우리 눈에 보이지 않지만, 컴파일러는 다음과 같은 코드를 컴파일 시간에 추가합니다. ---------------------------- import java.lang.*; class A extends Object { public A() { super(); } } ---------------------------- 굵게 표시한 부분은 자동으로 추가되는 내용입니다. 왜 그럴까요? 언어 스펙이 그렇게 규정하기 때문입니다. 구지 부연설명을 드려보자면..., (1) exte.. 더보기
garbage collection 1. garbage collection (쓰레기 수집) - 자바 프로그램이 더 이상 참조되지 않는 메모리를 모아 시스템에 되돌려 주는 것. - 프로그래머는 메모리에 대해서는 아무 관여하지 않는다. - 참조중인 객체를 찾는 방법 참조계수 기법 (reference-counting) : 객체를 참조하는 갯수를 추적하여 참조중인 객체를 구분. - heap 안에 있는 각 객체마다 참조계수(reference-count)가 유지 - 어떤 객체가 처음 생겨서 그 객체를 참조하는 변수에 배정하면 참조계수는 1이고 다른 변수가 그 객체를 참조할 때 참조계수는 1씩 증가한다. 그리고 객체를 참조하는 변수가 다른 값이 배정되면 1씩 감소한다. - 참조계수가 0인 객체 : garbage 추적 기법 (tracing) : 루트 노.. 더보기