Developer/Kotlin & Java

LSP? 리스코프 치환 원칙 - 자료형 S가 자료형 T의 하위형이라면 필요한 프로그램의 속성의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 치환할 수 있어야 한다는 원칙 역시나 설명글은 너무나 어렵죠? 이젠 익숙하시죠 ㅎㅎ 다시 말해서, 상속을 설명하고 있습니다 부모객체와 자식객체가 있다고 가정할 때, 자식은 당연히 부모 객체로 치환할 수 있어야 합니다! 어려우니까 직사각형과 정사각형을 예로 들어볼게요 어렸을 때 수학을 배웠던 기억에 따르면, 정사각형은 직사각형이죠? 왜냐하면 정사각형은 직사각형의 성질을 그대로 가지고 있기 때문입니다! 그래서, 정사각형을 직사각형으로 표현할 수 있게 되는 것입니다! 그러면 바로 예시 코드로 넘어가볼까요~? Code 우리는 도형이란 도메인을 지정하겠습니다. 거기에는 ..
OCP? OCP(Open Closed Principle) : 소프트웨어 객체는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 이게 무슨말이냐... 후 그러니까 음.. 내가 B라는 기능을 추가하고 싶을 때, A라는 원본 Code가 바뀌어서는 안된다는 의미입니다. 계산기를 예로 들자면, 덧셈(+) 기능의 계산기가 있을 때, 뺄셈(-)을 구현할 때 덧셈을 손대지 마라는 말입니다. 쪼금 이해가 되셨을까요.? 이 글을 검색하셨다면, 이미 훌륭한 Coder이니까 바로 Code로 살펴볼께요!! Code 예시 예시로 설명을 시작하겠습니다! 저는 웹 프로그래머에요. 그래서 내가 만든 Web Application에서 URL을 매핑하는 모듈을 만들고 싶었습니다. Controller에서 url을 Mapp..
SRP? SRP(Single Responsibility Principle) : 단일 책임의 원칙 클래스를 설계할 때 하나의 책임만을 수행하는데에 집중되어 있어야 한다는 원칙! 무슨말인지 모르시겠죠..? 현실세계를 예를 들자면, 학생(Student)이라는 객체가 있다고 가정해봅시다. 학생(Student)는 대학생이라서 수강신청을 해야되는데, 학생이 스스로 수강과목(Course)를 고르는 행동이 존재하겠죠? 학생(Student)이 과목(Course)을 고르는 행위는 수강신청과정에서의 학생 이라는 SRP를 준수하는 행위입니다. 하지만, 학생(Student)이 수강과목(CourseName)을 변경한다는 행위를 가정해볼까요? 학생은 수강과목 리스트를 돌면서 바꾸고 싶은 과목이 있다면, 해당 수강과목을 바꾸는 행위..
Reflection? - Java.lang.reflection에 있는 라이브러리 기능 - Class를 컴파일 단계 에 올리지 않고, 런타임 때 클래스를 동적으로 로딩하기 위해서 사용된다! - 코드 단으로 객체(Class)에 담겨진 이름과, 모든 메서드 이름을 알 수 있다!! - 따라서 쉬운 방식으로 메서드를 호출할 수 있다! 간단한 사용법 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public static void main(String[] args) { try { Class c = Class.forName("java.util.ArrayList"); Method[] m = c.getDeclaredMethods(); Field[] f = c.getDeclaredFields()..
동기화와 비동기화 - 동기화 방식은 한 자원에 대해 동시에 접근하는 것을 제한하는 방식이다. - 다시말해서, 순서를 지키겠다는 말이다. - 비동기화 방식은 한 자원에 대해 동시에 접근이 가능하다 동기화 - System Call이 끝날 때까지 다른 쓰레드의 접근을 막아버리는 것이다. - 한마디로, nextLine()에서 입력을 받을 때까지 대기하는 것과 같다. 비동기화 - System Call이 왔든 말든 상관없이 계속 호출할 수 있다. - Call Back 함수를 통해 결과를 가져온다! * 동기화의 차이? - 결과물을 가져오는 시점이 달라진다!!! Java의 Synchronized 키워드 - 한마디로 Java에서의 멀티 쓰레드에서의 접근을 막는다!! 입니다. 1 2 3 4 5 6 7 8 9 10 11 1..
JVM? - JVM : Java Virtual Machine, 자바 가상 머신 - 어떤 OS에서 동작할 수 있다는 이식성이 있으며, 스택기반으로 이루어져 있다! JVM은 다음과 같은 2가지 기능을 제공한다. ① 메모리 관리 ② Garbage Collection Why JVM? - Java 프로그램을 설계할 때, 알 수 없는 버그나 오류가 발생한 경우 빠른 디버깅을 위해 - 프로그래머가 동작과정을 숙지하고 있어야 한다 JVM 구조 Class Loader - 클래스 로더, Runtime시에 동적으로 클래스를 로드하여 링크를 통해 배치하는 작업을 수행하는 역할! - Java는 컴파일 타임에 클래스를 참조하는게 아니라 Runtime에 참조한다!! Execution Engine - Class Loader가 Run..
huisam
'Developer/Kotlin & Java' 카테고리의 글 목록 (4 Page)