본문 바로가기

Development

클래스 다이어그램 예시(배달 애플리케이션) 관계 표기법 클래스 간 관계와 표기법에 대한 자세한 설명은 이곳(https://hellmir.tistory.com/entry/클래스-설계-시-상속-관계-합성-관계-위임-관계의-개념in-Java)에 있다. 클래스 설계 시 상속 관계, 합성 관계, 위임 관계의 개념(in Java) 상속(Inheritance) 관계 상속은 한 클래스가 다른 클래스의 필드와 메서드를 그대로 재사용하면서 자신의 필드와 메서드를 추가해 확장할 수 있는 개념이다. 또한 상속받은 메서드는 Overriding을 통 hellmir.tistory.com 클래스 다이어그램 예시(배달 애플리케이션) Class Diagrams Member Shop Menu Order Cart 소스 코드는 이곳(https://github.com/hellmir/d.. 더보기
싱글톤 패턴(Singleton Pattern)의 개념과 특징 싱글톤 패턴의 개념 싱글톤 패턴은 객체지향 프로그래밍에서 특정 클래스의 인스턴스를 하나로 유지하기 위한 디자인 패턴이다. 다량의 자원을 필요로 하는 객체의 무분별한 생성을 방지하기 위해 설계되었다. 싱글톤 패턴은 인스턴스를 하나만 유지하므로, 해당 인스턴스는 사실상 전역 변수와 같은 역할을 한다. 이 때문에 여러 클라이언트의 요청이 동시에 처리되는 경우 데이터의 무결성에 문제가 발생할 소지가 크다. 따라서 동기화를 통해 리소스 동시 접근을 제어함으로써 데이터를 보호하고, 잘못된 상태 변경의 결과가 다른 데이터로 파급되지 않도록 주의해야 한다. 싱글톤 패턴의 장점 인스턴스 제어 인스턴스가 하나만 유지되도록 제한함으로써 무분별한 객체 생성을 방지하고, 메모리를 효율적으로 관리할 수 있다. 객체 상태 일관성 .. 더보기
클래스 설계 시 상속 관계, 합성 관계, 위임 관계의 개념(in Java) 상속(Inheritance) 관계 상속은 한 클래스가 다른 클래스의 필드와 메서드를 그대로 재사용하면서 자신의 필드와 메서드를 추가해 확장할 수 있는 개념이다. 또한 상속받은 메서드는 Overriding을 통해 자신만의 행위를 추가하거나 행위 전체를 변경할 수 있다. 상속 관계는 'is-a' 관계로서, 하위(자식) 타입은 상속 대상 부모 타입을 포함한 자신의 상위 타입 모두와 '하위 타입 is a 상위 타입'의 관계가 성립해야 한다. 예) Rabbit(하위 타입) is an animal(상위 타입). —> 토끼는 동물이다. (O) Animal(상위 타입) is a rabbit(하위 타입). —> 동물은 토끼다. (X) 예) Rabbit(하위 타입) is a mammal(상위 타입). —> 토끼는 포유류다.. 더보기
정적 타입 언어(Java)에서 타입 변환(Type Casting)이 필요한 이유 타입 변환의 개념 타입 변환(Type Casting 혹은 Type Conversion)은 특정 타입의 값을 다른 타입으로 변환하는 과정이다. 여기에는 변수의 자료형(Data Type)이나 객체의 타입(Object Type)을 다른 타입으로 변경하는 과정이 포함된다. 예전 포스팅에서 자료형이 필요한 이유에 대해서 다룬 바 있다(https://hellmir.tistory.com/entry/프로그래밍에서-자료형Data-type이-필요한-이유in-Java). 프로그래밍에서 자료형(Data type)이 필요한 이유(in Java) 자료형(Data type)은 데이터를 분류하는 방법이다. 자료형을 통해 해당 자료의 처리되는 데이터 종류, 메모리 할당 과정, 연산 수행 방법을 인지할 수 있다. 예를 들어, Primi.. 더보기
Java에서 접근 제한자의 의미와 종류 접근 제한자의 의미 백엔드 개발자에게 있어 보안은 가장 중대한 이슈 중 하나이다. 소프트웨어 서버는 고객의 개인정보와 기밀 자료를 다루므로, 백엔드 개발자가 보안에 가장 많은 공을 들여야 하는 것은 당연지사다. 사회에서 간간히 발생하는 정보 유출 사태는 고객의 개인 정보나 기밀 자료가 유출되면 어떤 일이 발생하는지에 대한 좋은 예시를 보여 주었다. 고객 정보뿐만 아니라 기업의 자산인 비즈니스 로직을 노출하지 않는 것 역시 매우 중요한 일이다. 이를 위해 대부분의 소프트웨어 기업에서는 기업 용역의 핵심인 비즈니스 로직을 철저히 감추고, 외부에 소프트웨어의 기능을 공유하더라도 Open API를 통해 외부와 연결 가능한 공용 인터페이스만을 노출한다. 소프트웨어는 접근 제한자를 통해 외부에 노출되어도 무관한 일.. 더보기
클래스 다이어그램(Class Diagram) 모델링 UML의 개념 UML(Unified Modeling Language)은 표준화된 모델링 언어로서, 주로 소프트웨어 시스템의 구조와 행동을 시각화, 문서화하는 데 이용되는 도구이다. 클래스 다이어그램은 일반적으로 Use Case 모델링과 Domain 모델링 이후에 모델링한다. 특히 Use Case 모델링 단계가 정말 중요하다고 생각하는데, 구현 기능이 고객의 요구사항과 동떨어져 산으로 가는 것을 방지하는 이정표 역할을 해줄 수 있고, Test Case의 기반 시나리오도 되어줄 수 있기 때문이다. UML 모델링 없이 프로젝트를 진행했었는데, 특히 Use Case 모델링을 하지 않고 그때그때 생각나는 대로 만들다 보니 기본적으로 제공되어야 할 기능이 너무 늦게 만들어지는 일도 있었다. 따라서 앞으로 진행할 프.. 더보기
Java에서 char 타입의 활용 char 타입의 개념 Java에서 char 타입은 Primitive type으로서, 0~65535의 정수값을 통해 16비트(2^16 = 65536)의 유니코드(Unicode) 문자를 표현한다. char 타입은 Object type인 Character 타입의 unboxed 형태이므로, Chararter 타입에 비해 활용처는 부족하지만 처리 속도가 빠르다. Primitive type과 Object type의 차이에 대한 설명은 이전 글에서 다뤘다(https://hellmir.tistory.com/entry/프로그래밍에서-자료형Data-type이-필요한-이유in-Java). 프로그래밍에서 자료형(Data type)이 필요한 이유(in Java) 자료형(Data type)은 데이터를 분류하는 방법이다. 자료형을.. 더보기
배열 출력, 복제, List 또는 Set에서 변경 배열값 출력 int[] a = {1, 2, 3}; System.out.println( Arrays.toString(a) ); java.lang의 toString 메소드가 아닌 java 유틸리티 함수인 Arrays를 사용한다. 배열 복제 int[] a = {1, 2, 3}; int[] b = a.clone(); 반복문을 이용하지 않고 배열을 그대로 복제한다. List 또는 Set을 Array로 변경(Object type만 가능) String[] array = list.toArray(new String[5]); list의 길이가 5 이하라면 길이 5짜리 배열을 만든다. List list = new ArrayList(); list.add("A"); list.add("B"); list.add("C"); Stri.. 더보기