[OOP] C6. SOLID: 효율적인 객체지향 설계를 위한 5대 원칙
·
Java/OOP
0. 객체 지향 설계 5원칙 SOLID SOLID는 객체 지향 설계 5원칙을 앞 글자를 따서 만든 말이다. 소프트웨어의 결합도는 낮추고, 응집도는 높이는 고전 원칙을 객체 지향의 관점에서 재정립한 것이라고 할 수 있다. ● 결합도 모듈(클래스) 간의 상호 의존 정도를 나타낸다. 결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이하다 . ● 응집도 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성을 말한다, 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아서 재사용이나 기능의 수정, 유지보수가 용이하다. 1. Single Responsibility Principle (단일 책임 원칙) 클래스는 단 한개의 책임을 가져야 한다. 클래스를 변경하는 이유는 ..
[OOP] 가비지 컬렉션(Garbage Collection) - 생성과 소멸
·
Java/OOP
1. 가비지 컬렉션(Garbage Collection) 가비지 컬렉션은 영어로 Garbeage Collection으로 줄여서 GC라고도 부릅니다. 가비지 컬렉션은 자바의 메모리 관리 방법 중의 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스를 말합니다. 2. 가비지 컬렉터(Garbage Collector) 가비지 컬렉터는 가비지 컬렉션을 수행하는 실제 동작을 담당하는 컴포넌트입니다. 자바 가상 머신(JVM)에서 실행되며, 가비지 컬렉션 알고리즘에 따라 사용하지 않는 객체를 탐지하고 제거합니다. 가비지 컬렉터는 자동으로 동작하며, 개발자가 직접 메모리 관리를 신경쓰지 않아도 됩니다. ● C와 C++ 같은 Unmanaged lang..
[OOP] Call by Value 와 Call by Reference
·
Java/OOP
'Call by Value'와 'Call by Reference'에 대해 알아보겠습니다. 이 두 개념은 함수에 인자를 전달하는 방식에 대한 이해를 돕고, 자바 코드의 동작을 예측하는 데 도움이 됩니다. 1. Call by Value(값에 의한 호출) 'Call by Value'는 함수에 인자를 전달할 때 인자의 값만을 복사해서 전달하는 방식을 말합니다. 이 방식에서는 원본 변수의 값이 함수 내에서 변경되더라도, 원본 변수에는 영향을 주지 않습니다. 자바에서 원시 타입(primitive types) 변수를 전달할 때 'Call by Value' 방식이 적용됩니다. 예를 들어, 아래의 코드를 보겠습니다. public class Main { static void updateValue(int value) { v..
[OOP] C2. 자바의 절차적/구조적 프로그래밍
·
Java/OOP
1. JDK, JRE, JVM JDK (Java Development Kit) JDK는 자바 개발 도구로, 자바 환경에서 돌아가는 프로그램을 개발하는 데 필요한 도구들을 모아놓은 소프트웨어 패키지입니다. JVM과 JRE에 의해 실행되고 구동될 수 있는 자바 프로그램을 생성할 수 있게 해줍니다. JDK에는 개발, 디버깅 등을 위한 도구가 포함되어 있습니다. JRE (Java Runtime Environment) JRE는 자바 실행 환경으로, JVM과 JVM이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있습니다. 다른 소프트웨어를 실행하도록 설계된 소프트웨어입니다. 여기에는 클래스 라이브러리, 로더 클래스 및 JVM이 포함됩니다. JVM (Java Virtual Machin..
[OOP] C1. 기계어에서 객체지향 언어로: 컴퓨터 언어의 진화
·
Java/OOP
1. 기계어 (Machine Language) 컴퓨터가 직접 이해하는 언어로 0과 1로 이루어진 이진 코드로 구성됩니다. 프로그래밍이 매우 어렵고 복잡하며, 인간이 이해하기 힘듭니다. CPU 회사마다 기계어가 다르다.(코드의 이식성이 안좋다.) 2. 어셈블리어 (Assembly Language) 기존의 0과 1의 나열에서 벗어나 좀 더 인간친화적인 언어 형태를 갖추었다. 기계어를 인간이 이해하기 쉽도록 기호화한 언어입니다.( ADD, PLUS) 기계어와 1:1로 대응되며, 기계어보다 이해하고 작성하기 쉽습니다. 각 운영체제, 하드웨어 종류에 따라 고유의 어셈블리어가 존재한다.(호환 X) 아직은 프로그래밍이 복잡하며 하드웨어에 의존적이며, 이식성이 떨어집니다. 3. C언어 (C Language) 고급 언어..
[BaekJoon] 2960번 에라토스테네스의 체(Kotlin)
·
Problem Solving
https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 1. 문제 고대 그리스의 수학자 에라토스테네스가 만들어 낸 소수를 찾는 방법. 이 방법은 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네스의 체'라고 부른다 2. 풀이 import java.util.* fun main(){ val sc = Scanner(System.`in`) var n = sc.nextInt() var k = sc.nextInt() var arr = BooleanArray(n+1){false} var cnt = 0 loop@ for(i in 2..n ){ for..
[BaekJoon] 2753번 윤년(JAVA)
·
Problem Solving
https://www.acmicpc.net/problem/2753 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 www.acmicpc.net 1. 윤년 윤년(閏年)은 역법을 실제 태양년에 맞추기 위해 여분의 하루 또는 월(月)을 끼우는 해이다. 태양년은 정수의 하루로 나누어떨어지지 않고, 달의 공전주기와 지구의 공전주기는 다르기 때문에 태양력에서는 하루(윤일), 태음태양력에서는 한 달(윤달)을 적절한 시기에 끼워서 이를 보정한다. 서력 기원 연수가 4로 나누어 떨어지는 해는 윤년(1)으로 한다. (2024년, 2028년, 20..
[DB 모델링] 데이터베이스 설계 5단계
·
Data Base/DB 모델링
데이터베이스는 웹사이트, 앱, 비즈니스 운영 등 다양한 분야에서 중요한 역할을 합니다. 데이터베이스 설계는 데이터를 효율적이고 효과적으로 관리하기 위한 중요한 과정이며, 성공적인 데이터베이스 구축을 위한 필수 요소입니다.본 블로그에서는 데이터베이스 설계의 5단계를 자세하게 설명하고, 각 단계별 주요 고려 사항, 팁, 실용적인 예시, 각 단계별 결과물 등을 제공하여 데이터베이스 설계 과정을 명확하고 이해하기 쉽게 안내합니다. 1단계: 요구사항 분석 데이터베이스 설계의 첫 단계는 프로젝트의 요구사항을 명확하게 분석하는 것입니다. 다음 질문들을 고려하여 요구사항을 정의해야 합니다.목적: 데이터베이스의 용도, 저장될 데이터 종류, 데이터 사용 방식, 예상 사용자 수, 성능 및 보안 요구사항 등을 명확하게 정의합..
[Android] Jetpack Compose란?
·
Android
1. Jetpack Compose란? 안드로이드 Jetpack Compose는 안드로이드 개발을 위한 새로운 UI 도구 키트입니다. 기존의 XML 기반 레이아웃 방식과는 달리 선언형 프로그래밍 방식을 사용하여 UI를 구현합니다. 2. 이전 방식 이전 방식의 안드로이드 UI 개발은 XML 기반 레이아웃을 사용하여 이루어졌습니다. XML 파일은 UI의 구조와 모양을 정의합니다. 레이아웃을 구성하기 위해 레이아웃 요소(View)를 사용합니다. 레이아웃 요소는 버튼, 텍스트 필드, 이미지 등과 같은 UI 요소를 나타냅니다. 레이아웃을 구성하는 방법은 다음과 같습니다. 레이아웃 요소를 정의합니다. 레이아웃 요소를 레이아웃에 추가합니다. 레이아웃 요소의 속성을 설정합니다. 예를 들어, 다음은 버튼을 포함하는 레이아..
[Spring] 스프링과 스프링부트
·
Spring/Spring
스프링과 스프링부트는 모두 자바 기반의 애플리케이션 개발 프레임워크입니다. 스프링은 2003년에 출시된 오픈소스 프레임워크로, 현재 가장 많이 사용되는 자바 애플리케이션 프레임워크 중 하나입니다. 스프링부트는 2014년에 출시된 스프링의 확장 프레임워크로, 스프링을 보다 쉽고 빠르게 사용할 수 있도록 도와줍니다. 이 글에서는 스프링과 스프링부트의 차이점에 대해 자세히 알아보겠습니다. 1. 기본 개념 스프링 자바 기반의 애플리케이션 개발 프레임워크 웹 애플리케이션 개발, 데이터 액세스, 보안, 배치 및 일괄 처리 등의 기능을 제공 XML, Java Configuration 등 다양한 방식으로 설정 가능 다양한 기능과 모듈을 제공하기 때문에 설정과 학습이 복잡할 수 있음 스프링부트 스프링의 확장 프레임워크 ..
JoonYong
'분류 전체보기' 카테고리의 글 목록 (5 Page)