본문 바로가기

분류 전체보기

클래스 다이어그램 예시(배달 애플리케이션) 관계 표기법 클래스 간 관계와 표기법에 대한 자세한 설명은 이곳(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)의 개념과 특징 싱글톤 패턴의 개념 싱글톤 패턴은 객체지향 프로그래밍에서 특정 클래스의 인스턴스를 하나로 유지하기 위한 디자인 패턴이다. 다량의 자원을 필요로 하는 객체의 무분별한 생성을 방지하기 위해 설계되었다. 싱글톤 패턴은 인스턴스를 하나만 유지하므로, 해당 인스턴스는 사실상 전역 변수와 같은 역할을 한다. 이 때문에 여러 클라이언트의 요청이 동시에 처리되는 경우 데이터의 무결성에 문제가 발생할 소지가 크다. 따라서 동기화를 통해 리소스 동시 접근을 제어함으로써 데이터를 보호하고, 잘못된 상태 변경의 결과가 다른 데이터로 파급되지 않도록 주의해야 한다. 싱글톤 패턴의 장점 인스턴스 제어 인스턴스가 하나만 유지되도록 제한함으로써 무분별한 객체 생성을 방지하고, 메모리를 효율적으로 관리할 수 있다. 객체 상태 일관성 .. 더보기
개발지식 스터디 발표 자료(MSA) Monolithic Architecture 개념 모든 도메인을 하나의 프로그램으로 개발 컴포넌트 간 메서드(함수) 호출을 통해 상호작용 장점 개발과 디버깅, 배포 모두 비교적 수월한 편 데이터베이스가 통합되어 데이터 일관성 유지 용이 대체로 성능이 뛰어남(컴포넌트끼리 메모리 내의 호출을 통해 상호작용하므로 응답 속도 빠름) 단점 배포까지의 사이클(테스트, 컴파일, 빌드 등)이 너무 오래 걸림 일부 컴포넌트의 프레임워크, 라이브러리 업데이트가 어려움(다른 컴포넌트에 영향을 주게 됨) 일부 컴포넌트의 장애가 전체 서비스로 전파되기 쉬움 (MSA 방식에 비해) 컴포넌트 간 결합도가 높아 일부 기능 변경의 파급효과가 큼 비교적 요구사항 변경에 따른 유지보수가 어려운 편 언어, 프레임워크에 종속적 ex) Spri.. 더보기
클래스 설계 시 상속 관계, 합성 관계, 위임 관계의 개념(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.. 더보기
개발지식 스터디 발표 자료(빌더 패턴 & 팩토리 메서드 패턴) 객체 생성 관련 대표적인 디자인 패턴 생성자 패턴: 생성자를 통해 객체를 생성 자바 빈 패턴: 객체 상태의 초기화 없이 객체 생성 후, setter를 통해 상태를 초기화/변경 프로토타입 패턴: 기존 객체를 복제해 새로운 객체를 생성 빌더 패턴: 객체 생성을 한 번에 하지 않고 순차적으로 진행 팩토리 메서드 패턴: 객체 생성 전용 인터페이스를 통해 새로운 객체를 생성 추상 팩토리 패턴: 여러 팩토리 메서드들을 모아, 여러 객체 간 연관된 객체 생성을 관리 객체 상태 관리 방법 객체의 상태를 직접 변경하는 방식 field의 접근제한자를 public으로 선언 매우 편리하게 원하는 값을 초기화/변경/조회 가능 의도치 않은 객체 상태 변경에 매우 취약함 유효성 검사를 수행할 수 없음 —> 객체가 유효하지 않은 상.. 더보기
Java에서 접근 제한자의 의미와 종류 접근 제한자의 의미 백엔드 개발자에게 있어 보안은 가장 중대한 이슈 중 하나이다. 소프트웨어 서버는 고객의 개인정보와 기밀 자료를 다루므로, 백엔드 개발자가 보안에 가장 많은 공을 들여야 하는 것은 당연지사다. 사회에서 간간히 발생하는 정보 유출 사태는 고객의 개인 정보나 기밀 자료가 유출되면 어떤 일이 발생하는지에 대한 좋은 예시를 보여 주었다. 고객 정보뿐만 아니라 기업의 자산인 비즈니스 로직을 노출하지 않는 것 역시 매우 중요한 일이다. 이를 위해 대부분의 소프트웨어 기업에서는 기업 용역의 핵심인 비즈니스 로직을 철저히 감추고, 외부에 소프트웨어의 기능을 공유하더라도 Open API를 통해 외부와 연결 가능한 공용 인터페이스만을 노출한다. 소프트웨어는 접근 제한자를 통해 외부에 노출되어도 무관한 일.. 더보기
객체지향의 사실과 오해 부록A 발표 자료 목차 부록A 추상화 기법 분류와 인스턴스화 개념과 범주 타입 외연과 집합 클래스 일반화와 특수화 범주의 계층 서브타입 상속 집합과 분해 계층적인 복잡성 합성 관계 패키지 부록A 추상화 기법 추상화 기법 추상화를 통해 복잡한 도메인을 단순하고 직관적으로 만들 수 있다. 추상화 기법을 통해 같은 특성을 가진 객체들을 동일한 타입으로 분류할 수 있다. 분류를 통해 각 객체의 세부 사항을 숨기고, 공통 특성을 통해 범주를 형성한다. 이를 반대로 수행해 객체를 인스턴스화할 수 있다. 예) 소나타, 그렌저, 제네시스 —> 자동차 —> 소나타, 그렌저, 제네시스 객체 간 차이를 숨기고 공통 특성을 추출하여 객체를 일반화한다. 이를 반대로 수행해 객체를 특수화할 수 있다. 예) 자동차, 자전거 —> 운송수단 —> 자동.. 더보기