목록도도하게 개발하자 (97)
도도한 개발자

* 객체의 null 체크 모든 객체를 처리할 때엔 널 체크를 반드시 해야 한다. 객체가 널이라는 것은 객체가 아무런 초기화가 되어 있지 않으며, 클래스에 선언되어 있는 어떤 메소드도 사용할 수 없다는 것을 의미한다. 그리고 널인 객체의 메소드를 호출하는 순간 예외를 발생시킨다. 널체크 하는 소스를 보자. public class StringNull { public static void main(String[] args) { StringNull sample = new StringNull(); sample.nullCheck(null); } public boolean nullCheck(String text) { int textLength = text.length(); System.out.println(textL..

* String 클래스 클래스 중에서 더하기 연산을 제공하는 클래스는 String 밖에 없다. 객체에 더하기는 그럼 어떻게 된 걸까? 객체에 더하기를 하면 toString() 메소드가 호출되고 그 결과를 더하는 것이다. String 클래스가 어떻게 선언되어 있는지 보자. public final class String extends Object implements Serializable, Comparable, CharSequence implements라고 적어준 뒤 인터페이스들을 나열하면 해당 인터페이스에 선언된 메소드를 이 클래스에서 구현한다는 의미다. 하지만 Serializable 인터페이스는 구현해야 하는 메소드가 하나도 없는 특이한 인터페이스다. 이를 구현한다고 선언해 놓으면, 해당 객체를 파일로 ..

자바에서는 예외적인 일 발생하게 되면 "예외" 라는 것을 던져버린다. null인 객체에 메소들르 호출한다든디, 5개의 공간을 가지는 배열을 만들고 6번째 값을 불러온다든지, 어떤 파일을 읽으라고 했는데 읽을 파일이 존재하지 않는다든지, 네트워크 연결이 되어 있는 어떤 서버가 갑자기 작동을 멈춰서 연결이 끊겨버린다는지 하는 경우가 여기에 속한다. * try-catch 배열 범위 밖의 값을 읽으려고 할 때를 살펴보자. public class ExceptionSample { public static void main(String[] args) { ExceptionSample sample = new ExceptionSample(); sample.arrayOutOfBounds(); } public void arr..

* 방법론 어떤 시스템을 개발하든 간에 "방법론"이라는 것을 사용하여 개발한다. 방법론이라는 것은 시스템을 어떻게 만들 것인지에 대한 절차를 설명하고, 어떤 문서(=산출물)를 작성해야 하는지는 정리해놓은 공동 절차라고 보면 된다. 일반적인 절차는 다음과 같이 네 단계로 이루어져 있다. · 분석 · 설계 · 개발 및 테스트 · 시스템 릴리즈 각 단계에 대해 간단히 알아보자. ** 분석 시스템을 분석하는 단계에서는, 시스템을 만들어달라고 한 사람들(SI에서는 고객, SM에서는 현업)에게 어떻게 개발하기를 원하는지 물어본다. 이러한 일련의 과정을 요구사항 분석이라고 한다. ** 설계 설계 단계에서는 분석 단계에서 만든 대략적인 그림을 프로그램으로 만들 수 있도록 설계하는 작업을 수행한다. 어떤 메소드를 만들 ..

* 모든 자바 클래스의 부모인 java.lang.Object 자바에선 기본적으로 이무런 상속을 받지 않으면 java.lang.Object 클래스를 확장한다. 확장하는지 안하는지를 확인하고자 하면 그 클래스에 있는 메소드를 사용하면 된다. public class C { public static void main(String[] args) { C c = new C(); System.out.println(object.toString());// @ } } C 클래스에는 main() 메소드 외에는 선언되어 잇는 메소드가 없다. 그런데 toString() 메소드가 호출된 것을 볼 수 있는데 컴파일이나 실행에도 전혀 문제가 없다. 자바는 한번에 이중 상속을 받을 수는 없지만 여러 단계로 상속을 받을 수는 있다. 부모..

API는 Appilication Programming Interface의 약자로, 애플리케이션에 선언되어 있는 클래스와 메소드에 대한 상세한 설명이 포함된 문서를 말한다. 자바의 API는 HTML로 구성되어 있는데 JDK docs를 다운받으면 docs > api안에 index.html 파일이 있다. 이 파일을 더블클릭하면 다음과 같은 화면이 나온다. 개발할 때 API는 단지 문서가 아니라 친구처럼 친하게 지내야 한다고 한다. * 실습 java.math 패키지의 BigDecimal 클래스의 API를 열어보자. 1. BigDecimal 클래스의 용도가 무엇인지 확인해보자. · BigDecimal은 Java 언어에서 숫자를 정밀하게 저장하고 표현할 수 있는 유일한 방법이다. · 소수점을 저장할 수 있는, 크기..

public class Parent { public Parent() { System.out.println("Parent Constructor"); } public void printName() { System.out.println("Parent printName()"); } } Parent 클래스에는 생성자와 printName()이라는 메소드가 있다. public class Child extends Parent { public Child() { System.out.println("Child Constructor"); } } Child 클래스에는 그냥 생성자만 있다. 그런데 클래스를 선언문을 보면 extends Parent가 뒤에 붙을 걸 볼 수 있다. extends라는 것은 '확장하다'로, 자바의 예약어..

* 패키지 자바 애플리케이션을 개발할 때 클래스들을 분류하지 않으면 이름이 중복되거나, 어떤 클래스가 어떤 일을 하는지 혼동되는 일이 발생한다. 그래서 '패키지'라는 것이 존재한다. ** 패키지 선언을 할 때 꼭 지켜야 하는 제약사항이 있다. - 소스의 가장 첫 줄에 있어야 한다. package 선언 위에 주석이나 공백이 있는 것은 상관없으나 다른 자바 문장이 하나라도 있으면 컴파일이 제대로 되지 않는다. - 패키지 선언은 소스 하나에 하나만 있어야 한다. 한 소스 파일이 두개의 폴더에 한번에 존재할 수 없기 때문이다. - 패키지 이름과 위한 폴더 이름이 같아야 한다. 자바 파일을 만들어 놓은 폴더의 이름과 여기에 선언된 패키지 이름이 다를 경우, javac로 컴파일하려고 하면 파일을 찾지 못하여 컴파일..