Home

객체지향 설계 원칙 5가지

지난 포스팅 객체지향 주요특징에 이어 이번엔 객체지향의 주요 5가지 원칙을 정리해보려고 한다. 객체지향 5가지 원칙인프런에서 스프링 핵심 원리 - 기본편을 수강하며 정리한 내용이다. 토비의 스프링을 읽으면서 템플릿 메소드에 대한 내용이 쉽게 와닿지않아서 수강한 내용이었는데, 도움이 많이 되었다. SRP (Single Responsibility Princ

객체지향 주요특징 4가지

객체지향을 공부하며 정리한 포스팅이다. 객체지향의 주요 특징 4가지와 원칙 5가지를 구분하여 2개의 포스팅으로 정리했다. 객체지향 특징 4가지일반적으로 자바라는 언어를 공부하면 공부하게 되는 4가지 특징들이다. 추상화 캡슐화 상속 다형성 추상화 추상화는 실제 세상을 객체화하는게 아니라 필요한 정보만을 중심으로 간소화하는것을 의미한다. 실제 지형도보다

자바에서의 다중상속 문제(a.k.a. Diamond Problem)

자바에서는 왜 다중상속을 허용하지 않는걸까? 그리고 어떻게 인터페이스를 통해서는 다중상속이 가능한걸까? 이를 알아보기 위해 아래와 같은 상속관계를 갖는 클래스들을 생성해보겠다. Child -> Mother -> GrandMother, Father -> GrandMother Person.java 1234567public class Pers

Gitignore 새로 반영하기

이미 변경관리에 의해 관리되고 있는 파일이라면 이후에 gitignore에 추가하더라도 변경관리에서 계속 추적이 될 수 있다. 이 때 gitignore를 변경관리에 적용하기 위해서는 변경관리가 추적중인 캐시 파일을 삭제하고 새로 올려야 한다. 이 방법을 정리해보았다. gitignore에 application.properties 파일을 무시하도록 추가해두

디미터 법칙(Law of Demeter)

클린코드과정에서 코드리뷰를 통해 알게된 원칙이다. 흥미로운 원칙이기도 하고, 우아한 테크코스 기술블로그에서 심플하게 잘 정리해주셔서 정리해보았다. 객체간 결합도가 높아지게 될 경우 객체에 변경사항이 발생할 경우, 코드 곳곳에서 문제가 발생할 수 있다. 이는 유지보수의 어려움을 야기하게 된다. 디미터 법칙은 이런 문제를 지양하고자 하는 객체간 결합도를

Live Study 12주차 - Annotation

애노테이션 정의하는 방법 자바 표준 애노테이션 @Override @Deprecated @SuppressWarnings @FunctionalInterface @SafeVarargs @Native @Target @Retention @Documented @Inherited 애노테이션 프로세서 애노테이션 정의하는 방법Enum과 함께 Java 1.5에

Live Study 11주차 - Enum

enum 이란 enum 정의하는 방법 ordinal enum이 제공하는 메서드 values()와 valueOf() java.lang.Enum EnumSet EnumSet 주요메서드 enum 이란Enum이란, 서로 관련된 상수를 편리하게 선언하기 위한 기술로써, 상수 간 비교에서 리터럴만 비교한다면 Enum 간 비교에서는 타입까지 관리하기 때

Live Study 14주차 - 제네릭

제네릭 제네릭 사용법 제네릭 타입 매개변수 제네릭 클래스 제네릭 주요 개념 (바운디드 타입, 와일드 카드) 제네릭 메서드 만들기 Erasure 제네릭사용법을 알기 전, 제네릭(Generics)이 뭔지부터 알아보자. 제네릭은 클래스 내부에서 사용할 데이터 타입을 클래스 외부에서 지정하는 기법이다. 오라클 문서에 의하면, Nutshell 에서는 제

Live Study 9주차 - 예외 처리

자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 예외처리 try catch throw throws finally 자바가 제공하는 예외 계층 구조 Checked Exeption Unchecked Exception Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차

URL 간단히 알아보기

URL은 어떤 구조로 되어있는걸까? 프로토콜 도메인 포트 URI 프로토콜 네트워크 5계층에서 응용계층에 해당하는 네트워크 프로토콜을 의미한다. 우리가 실습하는 목적은 로컬환경에서 서블릿으로 만든 서버로 요청받은 리소스를 제대로 반환받는지 확인하는 애플리케이션이므로 네트워크 프로토콜은 HTTP(Hyper Text Transfer Protocol)를 사