Language

·Language/Java
일전에 컴파일을 정리하며 "Java는 컴파일 기반 언어 중 하나다."라고 정리하였는데 최근 강의에서 Java는 컴파일러와 인터프리터를 모두 수행하는 '하이브리드 언어'이다.라는 말을 듣게 되어 정리를 해보았다. 그럼 우선 Java에 대해 알아보기 전에 인터프리터와 컴파일러를 간단히 알아보자. 컴파일러(compiler) 고급언어는 실행하기 전 기계가 이해할 수 있는 기계어로 번역하는 작업이 필요하다. 이것을 컴파일이라고 한다. 이런 컴파일을 해주는 도구 또는 논리적인 장치를 '컴파일러'라고 한다. 컴파일러는 프로그램 전체를 스캔하여 이를 모두 기계어로 번역한다. 전체를 스캔하기 때문에 초기 스캔 시간을 오래 걸린다. 하지만 전체 실행 시간 기준을 두고 비교해 보면 오히려 인터프리터보다 빠르다. 왜냐하면 컴..
·Language/Java
객체지향의 4대 특징을 정리하면서 추상화를 설명할 때 인터페이스를 예로 들어 설명을 했다. 공통적인 속성과 기능을 정의하기 위해 인터페이스를 사용한다라고 설명했다. 그럼 내가 알고 있는 인터페이스와의 개념과 사용용도를 생각해 보자. 인터페이스는 기술명세서 또는 다양한 구현체가 존재할 수 환경에서의 기초가 되는 틀정도 개념으로 사용하였다. 예를 들어 설명하자면 스프링 프로젝트에서 비즈니스 로직을 구현하는 Service단에서 기능 구현 전 인터페이스를 생성하여 기능의 명세만 먼저 작성하는 행위, DB가 정해지기 전 작업을 진행하기 위해 기준 Repository를 인터페이스 선언하여 구현하는 행위 등의 용도로 사용하였다. 이제 인터페이스의 특징과 기능을 정리해 보고 그것이 객체지향 관점에서 어떤 역할을 하는지..
·Language/Java
객체지향은 4가지 특징을 가지고 있다. 이 4가지 특징에 대해서는 자주 들어 알고 있지만 올바르게 개념을 가지고 있는지는 확인할 필요가 있어 정리를 해보았다. 객체지향의 4가지 특징 캡슐화 상속 추상화 다형성 캡슐화 캡슐화란 변수나 메서드들을 캡슐로 감싸서 안 보이게 하는 정보 은닉 개념 중 하나이다. 객체의 개념에서 볼 때는 객체의 속성(Field)과 행위(Method)를 하나로 묶고, 실제 구현 내용의 일부를 외부에 감추어 은닉하여 외부에서 객체 내부에 어떤 속성이 있는지 완벽하게 알지 못해야 하는 것을 의미한다. 캡슐화는 객체의 속성과 행위를 하나로 묶음으로써 높은 응집도를 가지며, 객체의 내부 상태를 직접적으로 접근하지 못하게 막음으로써 결합도를 낮아지게 한다. public class Person..
NEXT STEP > 자바 플레이그라운드 with TDD, 클린 코드 자동차 경주 미션 중 해당 강좌의 피드팩 영상을 보면 객체를 객체스럽게 사용하도록 리팩터링 해라 라는 내용이 나오고 getter, setter 사용을 지양하라는 말이 나온다. 이것이 의미하는것은 무엇일까? 만약 자동차 경주 미션 중 Car라는 클래스를 추가한 후 name과 position을 상태 값으로 가지는 객체를 추가했다고 가정해 보자. 이 객체의 로직을 하나도 구현하지 않고, 인스턴스 변수에 대한 getter와 setter 메서드만 있는 경우가 있다. public class Car { private String name; private int position = 1; public Car(String name){ this.name ..
NEXT STEP > 자바 플레이그라운드 with TDD, 클린 코드 자동차 경주 미션 중 테스트하기 힘든 코드 자동차 경주 미션을 기능 중 전진에 대한 기능을 구현할 때 “0에서 9 사이에서 random 값을 구한 후 random 값이 4 이상” 경우 전진한다는 조건이 있다. 전진조건을 테스트하기 위해서는 난수를 생성해야 되는데 난수의 값은 어떤 값이 나올지 판단할 수 없으므로 테스트하기가 힘들다. public class Car { public static final int BOUND = 9; public static final int FORWARD_NUM = 4; .... //자동차 전진 메서드 public void move() { if(makeRandomNum() >= FORWARD_NUM){ th..
JH_DEV77
'Language' 카테고리의 글 목록 (2 Page)