분류 전체보기

    [Spring Boot] DI 와 IoC는 무엇일까?

    스프링에서는 IoC와 DI가 전부라는 말을 들었다. 도데체 IoC와 DI가 얼마나 중요하길래 그럴까 라는 생각을 했다. 1. DI (Dependency Injection) DI는 "의존성" 주입이다. 예를 들어 A는 B에 의존한다라는 말은 A는 B의 상황에 따라 바뀔수도 있다라는 말로 될수도 있다. 의존하기 때문에 B가 바뀌면 A에게도 변화가 올 수 있다는 것이다. class A{ public B makeB(){ B b = new B(); return b; } } 코드로 본다면 위와 같은 예시가 있다. A클래스 안에서 b라는 객체를 만들었다. 그런데 갑자기 B라는 클래스에서 생성자를 수정하여 매개변수가 필요하다면 컴파일 오류가 난다. 이와 같이 B의 상황이 바뀌면서 A까지 영향을 미치는 상황이 의존한다 ..

    [정리] Youtube가 가진 기능 도메인으로 정리해보기

    유투브는 어떤 기능이 존재할까라는 생각을 하며 유튜브 홈페이지를 들어가봤다. 1. 사용자 관점에서 기능 정리 먼저 눈에 보이는건 동영상과 관련된 기능이었다. 1. 동영상 나열 2. 쇼츠 동영상 나열 3. 동영상 미리보기 4. 동영상 검색 5. 카테고리 선택 6. 구독한 채널 동영상 보기 그다음 눈에 들어온건 로그인 관련 기능이다. 1. 로그인, 로그아웃 2. 알람 3. 동영상 만들기 4. 보관함 5. 시청기록 6. 내 동영상 그 다음 하나의 동영상을 클릭하여 들어가봤다. 1. 일시정지 2. 영상 구간 선택 3. 구독 4. 좋아요, 싫어요 5. 신고 6. 클립만들기 7. 댓글 달기 8. 댓글 좋아요 9. 대댓글 10. 다른 동영상 보기 11. 날짜 표시 12. 조회수 표시 설정도 들어가봤다. 1. 멤버십 ..

    [Java] @Override 꼭 적어야 하나?

    정해진 인터페이스를 구현하는 경우 인터페이스가 가진 메소드들은 꼭 @Override 를 적어 재정의를 해줘야 한다. 이처럼 Override는 재정의를 위해 덮어쓴다는 표현이다. 그렇다면 구현이 아닌 확장의 경우도 꼭 적어야 할까라는 생각이 든다. extends(확장)의 경우 부모가 가진 메소드를 굳이 재정의 해주지 않아도 사용할 수 있다. 하지만 부모가 가진 메소드를 내 입맛대로 바꾸면서 재정의를 하려고 한다면 @Override를 적어줘야 한다. 아래와 같이 똑같은 코드인데 @Override가 있고 없음에 따라 결과가 달라질 수 있다. class Hi { public void say() { System.out.println("안녕"); } } class Bye extends Hi { public void..

    [Java] 인터페이스가 가진 객체지향의 특징

    인터페이스는 객체지향의 특징 중 추상화, 다형성, 상속성의 특징을 가지고 있다. 1. 추상화 인터페이스는 미리 기능들을 정의하여 다른 객체에서 구현을 통해 정의된 기능들을 가져다 쓴다. 사람과 원숭이가 가지는 공통적인 숨쉬기, 걷기 등과 같은 공통적인 기능들을 인터페이스에 미리 정의하여 쓸 수 있기때문에 추상화의 특징을 가진다. 2. 다형성 하나의 인터페이스로 여러 자식들을 가질 수 있다는 점에서 다형성의 특징도 가지고 있다. 3. 상속성 객체지향의 특징 중 상속성같은 경우에는 속성과 기능을 부모로부터 물려받을 수 있다. 인터페이스를 구현한 구현체도 인터페이스가 가진 속성과 기능을 사용하기 때문에 결국엔 인터페이스를 물려받는것이라고 할 수 있다. 그래서 상속성까지 가지고 있는 것이다. 4. 캡슐화 인터페..

    [정리] 객체지향의 4가지 특징

    객체지향에는 4가지 특징이 있다. 1. 캡슐화 캡슐화는 캡슐처럼 감싼다고 해서 캡슐화이다. 우리가 먹는 알약을 떠올리면 알약안에 있는 성분은 모르지만 그 효과는 알고 있다. 이처럼 안의 내용을 숨기면서 동작하는 것이 캡슐화이다. public class Main { public static void main(String[] args) { Capsule capsule = new Capsule(); String randomString = capsule.getRandomString(); } } 나는 getRandomString이라는 메소드 이름을 보고 랜덤으로 문자열을 주는구나 생각하고 메소드를 실행시켰다. 여기서 나는 어떻게 랜덤으로 값을 뽑아주는지 모르고 결과값만을 받게 된다. 설령 아래와 같이 임의로 값을..

    [정리] 라이선스(저작권)

    먼저 한글로 라이센스라고 알고 있었지만 라이선스라고 한다. 개발자들에겐 라이선스란 굉장히 중요한 부분이다. 오픈소스를 가져다 기능을 구현했지만 어느날 그 오픈소스의 라이선스때문에 코드를 강제적으로 오픈해야 될수도 있다. 또한 상업적사용을 제한할 수도 있기 때문에 사용하기전 해당 소스의 라이선스를 한번 확인하는것이 중요하다. 현재 소프트웨어 라이선스 분류는 아래와 같다. 이 중 흔히 볼수 있는 라이선스는 MIT, Apache2.0, GPL 등이 있다. 1. MIT MIT 라이선스는 MIT공대에서 자기 학교의 개발자들을 위해 개발한 라이선스이다. MIT 라이선스를 따르는 소프트웨어를 개조한 제품을 반드시 오픈 소스로 배포해야 한다는 규정이 없으며 다른 엄격한 라이선스를 피하려는 사용자들에게 인기가 있다. 배..