클래스 디자인(Class design)이라는 것은 한 프로그램의 클레스를 설계하는 것이다. 어떤 건물을 지을 때 건물의 설계도를 그리고 그 설계도에 따라서 건물을 짓는다. 그리고 그 설계도라는 것은 규모가 커질수록 중요도가 높아진다. 소프트웨어도 마찬가지이다. 만약 소규모 프로젝트를 진행함에 있어서 설계도는 간단하게 넘어갈 수도 있다. 하지만 프로젝트의 규모가 커질수록 그 설계도는 정교하게 작성되어야 할 것이다. 먼저 클래스, 추상 클래스, 인터페이스의 개념을 잡고 넘어가도록 하자. 클래스(Class) 클래스는 하나의 설계도라고 보면 될 것이다. 클래스에는 멤버변수, 메소드, 내부 클래스 등이 존재할 수 있다. 이 클래스라는 설계도를 통해 실체화한 것이 객체(Instance)이다. 또는 인스턴스라고 말하..
기존의 클래스를 재사용하는 것이다. 적은 양의 코드로 새로운 클래스를 구현할 수 있고, 공통된 코드를 수정하는데에도 용이한 기법이다. 만약 사람이라는 클래스와 학생이라는 클래스를 정의한다고 했을때, 학생이라는 클래스는 사람이라는 공통된 성질을 가지면서, 학생이라는 특수한 성질을 가질 수 있다. 따라서 학생 클래스를 정의한다고 할때, 사람이라는 클래스를 상속받아서 공통된 특성을 포함시키고, 학생의 특수한 부분은 따로 만들어낼 수 있다는 것이다. 아래 코드를 통해 자세히 알아보도록 하자. // 사람 class Person { int age;// 나이 String name;// 이름 // 먹는다 void eat() {} } // 학생 class Student extends Person { int student..
환경변수 공식적인 의미의 환경변수(Environment variable)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들이다. OS상에서 동작하는 응용프로그램들이 참조하기위한 설정이 기록된다. 따라서 이 환경변수를 건드려야 할 상황이 생긴다면 신중하게 해야한다. 때에 따라서 프로그램의 정상적인 동작을 보장받지 못할 수 있기 때문이다. 그래서 우리가 주로 개발환경을 설정해야할 때 변경하는 환경변수는 Path나 CLASSPATH정도가 되겠다. 환경변수에도 두가지가 존재한다. 사용자 변수 - OS내의 사용자 별로 다르게 설정가능한 환경변수시스템 변수 - 시스템 전체에 모두 적용되는 환경변수 다른 사용자에게 영향을 미치느냐 미치지 않느냐에 따라서 환경변수를 변경할때도 주의를 기울이도록 해야한다..
메소드로 인자값을 넘기는 방법 메소드로 인자값을 넘기는 방법은 크게 두 가지가 있다. Call by valueCall by reference Call by value라는 것은 그대로 해석하면 '값에 의한 호출'이다. 메소드로 인자값을 넘길때 그 값을 복사하여 넘기는 형태이다. 따라서 이 방식으로 메소드 호출을 하면 메소드 내에서는 복사된 값으로 작업을 하기 때문에 원래의 값을 변경시키지 않는다. Call by reference는 '참조에 의한 호출'이다. 인자값을 메소드로 넘겨 줄때 그 객체를 참조하는 주소를 넘겨주는 형태이다. 따라서 메소드 내에서도 원래의 값에 접근이 가능하다. 아래의 예시를 통하여 정확하게 알아보도록 하겠다. 1. 인자값으로 기본형을 사용했을 때 public class Test { ..
JVM(Java Virtual Machine)은 자바 가상 머신으로 자바 프로그램을 실행시키기 위하여 반드시 실행되어야 하는 기초가 되는 프로그램이다. 즉 자바 프로그램을 실행시킨다는 것은 JVM을 실행시키고 그 위에서 자바 프로그램을 실행시킨다는 의미가 된다. 따라서 JVM은 운영체제와 자바프로그램 사이를 연결해주는 중계자 역할을 한다. 이러한 특징으로 인해 자바 프로그램에서 오류가 발생해도 JVM만 다운될 뿐 전체 시스템에 데미지를 주지 않는다. 또한 플렛폼에 의존적이지 않게 모든 자바의 프로그램이 구동된다고 할 수 있다. 정확히 말하면 JVM이 설치될 수 있는 모든 플렛폼이라고 보는것이 더 나을것이다. 자바라는 언어는 기본적으로 동적할당을 프로그래머에게 맡기지 않는다. C언어에서 malloc(), ..