🔠 프로그래밍언어/☕️ Java

    Java :: 예외 처리

    Java :: 예외 처리

    프로그램 오류 프로그램 오류의 종류 컴파일 에러 : 컴파일할 때 발생하는 에러 런타임 에러 : 실행할 때 발생하는 에러 논리적 에러 : 사용자의 작성 의도와는 다른 동작 수행 예외처리 정의와 목적 Java 의 런타임 에러 - 에러(Error)와 예외(Exception) 에러 (Error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외 (Exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 예외처리 정의와 목적 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성 목적 : 프로그램의 비정상 종료를 막고, 정상 실행상태를 유지하는 것 예외 클래스의 계층구조 RuntimeException 클래스들 : 프로그래머의 실수로 발생하는 예외 Except..

    Java :: 어노테이션(Annotation)

    Java :: 어노테이션(Annotation)

    어노테이션(Annotation) 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공 @Test // 이 메소드가 테스트 대상임을 테스트 프로그램에게 알림 ! public void method() { ... } 표준 어노테이션 Java 에서 제공하는 어노테이션 @Override 오버라이딩을 올바르게 했는지 컴파일러가 체크하게 함 오버라이딩할 때 메소드 이름을 잘못 적는 실수 등 발생 가능 class Parent { void parentMethod() {} } class Child extends Parent { void parentmethod() {} } 오버라이딩 하려고 했으나 실수로 이름 잘못 적었을 때 ! class Child extends Parent { @Override void ..

    Java :: 열거형 - Enumeration

    Java :: 열거형 - Enumeration

    열거형(Enumeration) 관련된 상수들을 같이 묶어 놓은 것 Java 는 타입에 안전한 열거형을 제공 class Menu { enum CoffeeMenu { ESPRESSO, AMERICANO, LATTE } enum TeaMenu { GREEN_TEA, YUTU_TEA } CoffeeMenu coffeeMenu; TeaMenu teaMenu; } 안전한 열거형이란 무슨 의미일까? 예를 들어 아래처럼 열거형을 사용하지 않고 상수로 관리한다고 생각해보자. class Menu { static int ESPRESSO = 0; static int AMERICANO = 1; static int LATTE = 2; static int GREEN_TEA = 0; static int YUJU_TEA = 1; } ..

    Java :: 팩토리(Factory) 메소드 패턴

    Java :: 팩토리(Factory) 메소드 패턴

    팩토리(Factory) 메소드 패턴 객체 생성 처리를 서브 클래스로 분리하여 처리하도록 캡슐화하는 패턴 특정 입력값에 따라 다른 객체를 생성해야 할 때, 분기에 따라서 객체를 생성할 때 팩토리 메소드 패턴을 적용하면 좋다. 조건에 따라 객체를 생성하는 공장을 만드는 느낌 ! 장점 객체간의 결합도가 낮아지고 유지보수에 용이해짐 객체들을 한 곳에서 관리할 수 있게 됨 메소드로 작동하기 때문에 리턴 값으로 서로 다른 객체를 반환할 수 있음 단점 불필요하게 많은 클래스를 정의하게 될 수 있음 예시 코드 팩토리 메소드 패턴 적용 전 abstract class Item { } class OrangeJuice extends Item { OrangeJuice() { System.out.println("오렌지쥬스 생성"..

    Java :: 싱글톤(Singleton) 패턴

    Java :: 싱글톤(Singleton) 패턴

    싱글톤(Singleton) 패턴 클래스의 인스턴스가 하나임을 보장하고, 접근할 수 있는 전역적인 접근점 제공 ! 딱 하나의 인스턴스만 생성. 생성된 인스턴스를 어디서든 참조할 수 있게 한다. 실제로 생성되는 인스턴스는 하나 ! (객체 생성을 한번으로 제한) 생성자가 또 호출되어도 이미 생성된 인스턴스를 리턴해주는 방식. 장점 메모리 낭비 방지 싱글톤 인스턴스를 사용하면 다른 인스턴스 간에 데이터 공유가 쉬움 오직 하나의 인스턴스가 존재하는 것을 보증하기에 개발 시 실수를 줄일 수 있음 단점 전역변수보다 사용하기 불편 싱글톤 역할이 커지면 결합도가 높아져 객체지향 설계원칙에서 어긋날 수 있음 멀티쓰레드 환경에서 동기화 처리를 하지 않으면 컨트롤이 어려움 인스턴스의 파괴 시점을 컨트롤 하기 어려움 예시 코드..

    Java :: 디자인 패턴

    Java :: 디자인 패턴

    디자인 패턴 디자인 패턴이란? 설계 문제에 대한 해답을 문서화 하기 위해 고안한 형식 반복되는 패턴의 원리에 대한 개념을 공학적인 측면에서 도입한 것 특정 코드의 일부분이 아님 라이브러리처럼 프로그램에 붙여넣을 수 없음 디자인 패턴을 도입하는 것이 해답이 아니다. 잘못 도입하면 문제가 될 수도 있음 장점 프로그램 전체 라인을 읽지 않아도 쉽게 인식하고 요점 파악 가능 추상적인 수준에서 다른 팀원들과 의사소통 효과적으로 할 수 있음 프로그래밍 언어, 개발중인 프로그램에 관계 없이 재사용 및 확장 가능 GoF - Gang of Four 객체지향 분야의 문제점을 분석해 24개 패턴으로 분류 기존 객체지향 설계 시 발생했던 문제를 카탈로그화 하여 패턴 정리 대규모 프로젝트의 진행에서 가장 중요한 요소는 통일된 ..

    Java :: 프로그램 개발 원칙

    Java :: 프로그램 개발 원칙

    DRY - Don’t Repeat Yourself 같은 일을 두 번 반복해서 하지 않음 같은 코드가 두 번 이상 사용될 경우엔 재사용 프로젝트가 커지면 작은 조각으로 나누어 코드를 재사용 코드 의존성에 의한 복잡도가 줄어들어 유지보수비용이 절감됨 반대 WET : We Enjoy Typing KISS - Keep It Simple, Stupid 코드는 가급적 단순 하게 구현해야 함 디자인에서 보다 간단하고 알기 쉽게 만드는 편이 좋음 큰 프로젝트를 복잡하게 디자인해서 구현하는 건 프로젝트 이해도가 부족하다는 것 비전문가에게 프로젝트를 설명할 수 없다면 제대로 이해했다고 보기 힘듬 YAGNI - You aren’t gonna need it 프로그래머가 필요하다고 간주할 때까지 기능을 추가하지 않음 실제로 필..

    Java :: 객체지향 5대 설계 원칙 - SOLID

    Java :: 객체지향 5대 설계 원칙 - SOLID

    객체지향 설계 5대원칙 결합도를 낮추고 응집도를 높일 수 있는, 객체지향적 설계 관점에서 지켜야 할 원칙들을 재정립 ! SOLID SRP : Single Responsibility Principle 단일 책임 원칙 OCP : Open Closed Principle 개방 폐쇄 원칙 LSP : Liskov Substitution Principle 리스코프 치환 원칙 ISP : Interface Segregation Principle 인터페이스 분리 원칙 DIP : Dependency Inversion Principle 의존성 역전 원칙 SRP 단일 책임 원칙 하나의 역할을 책임지는 코드를 함께 묶어주는 것 → 응집도 서로 다른 역할을 맡은 코드는 분리하여야 한다. 모든 클래스는 단 하나의 책임만을 가져야 함..