Study(3)
-
객체 지향 설계의 5가지 원칙 (SOLID)
좋은 객체 지향 설계의 5가지 원칙 (SOLID) SRP (Single Responsibility principle) 단일 책임 원칙 I. 한 클래스는 하나의 책임만 가져야 한다. II. 하나의 책임이라는 것은 모호하다. III. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것 OCP (Open/Closed Principle) 개방/폐쇠 원칙 I. SW 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. - 확장하려면… 당연히 변경을 해야하는거 아닌가? 다형성을 활용해보자 II. Interface를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현 III. 아래 코드는 MemberService 클라이언트가 구현 클래스를 직접 선택하고 있는 상황 Ex..
2021.04.11 -
유클리드 호제법의 개념과 Java 코드
유클리드 호제법이란? 2개의 자연수의 최대공약수를 구하는 알고리즘의 하나이다. 유클리드(Euclid)에 의해 기원전 300년경에 발견된 가장 오래된 알고리즘이다. (호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 말한다.) 유클리드 호제법을 알아보기 전, 어렸을적 배운 최대 공약수와 최소 공배수를 구하는 방법을 살펴보자. 소인수 분해를 이용해 최대 공약수, 최소 공배수 구하기 (중요x) 최대공약수 (Greatest Common Divisor) 두 자연수의 공통된 약수 중 가장 큰 수를 의미하며, GCD 라고 한다. 최소공배수 (Least Commn Multiple) 두 자연수의 공통된 배수 중 가장 작은 수를 의미하며, LCM 라고 한다. 소인수 분해를 이..
2021.03.16 -
C, Java 의 컴파일 과정과 JVM 메모리 구조
C언어의 Build Build 란 ? 소스 파일을 다음 단계를 거쳐 실행파일이 생성되는 과정 Compiler 와 Linker 컴파일러 - 고급언어를 저급언어로 변환하여 목적파일에 써 넣는 역할 (=컴파일) 링커 - 목적파일을 실행파일로 바꾸고 OS에 맞도록 형태를 바꾸는 StartUp 이라는 추가 코드를 삽입하는 역할 (=링크) 컴파일러가 생성하는 저급언어는 특정 CPU와 OS에서만 동작하기 때문에 컴파일러는 플랫폼에 종속적이다. 목적 파일이라는 중간 과정을 거치는 이유 ? 하나의 소스에 필요한 모든 명령을 다 기술할 수 없다. 그렇기에 여러 개의 소스를 합쳐 하나의 exe 파일을 만들어 내기 위함이다. 소스를 여러 개 작성하고 이것을 모두 연결하면 완전한 exe 파일이 된다. Java언어의 Build ..
2021.03.06