객체 지향 설계의 정수 5원칙 SOLID SRP : 단일 책임 원칙 OCP : 개방 폐쇄 원칙 LSP : 리스코프 치환 원칙 ISP : 인터페이스 분리 원칙 DIP : 의존 역전 원칙 SOLID를 잘 녹여낸 프로그램은 이해하기 쉬우며 리팩토링과 유지보수가 수월해지며 논리적으로 정연됩니다. SOLID는 객체지향의 4대원칙 캡상추다(줄임말..)를 발판으로 하고 있으며 디자인 패턴의 뼈대, 스프링 프레임워크의 근간이기도 합니다. 1) SRP - 단일 책임 원칙 어떤 클래스를 변경해야 하는 이유는 1가지 여야 한다. 예시를 들자면 남자라는 클래스에 여자친구, 어머니, 직장상사 등등과 접목하는 메서드있다고 칩니다. 그런데 여자친구와 헤어져서 여자친구와 관련된 데이트하기 메서드가 무색해집니다. 쓸모가 없어지는 것이..
저번에는 추상화, 상속, 다형성, 캡슐화에 관한 4대 객체지향의 특성을 알아보았고, 이제 자바에서 객체 지향을 확장하는 키워드를 알아보겠습니다. 1) Abstract 구현부가 없는 추상 메서드나 추상 클래스. 이것들을 왜 ? 정의할까요? 책에 있는 내용을 인용하자면, 동물이라는 클래스에 하위 고양이와 강아지가 있다고 가정하겠습니다. 그러면 강아지와 고양이가 울 때 멍멍, 야옹이라고 울겠죠? 그렇다면 동물 클래스는 어떻게 울어야할까요? 난해할 뿐만 아니라 답도 없습니다. 즉 이런 본질 클래스에는 추상이라는 키워드를 붙여서 추상 메서드를 재정의 하도록 하고, 본질 클래스는 쓰여지지 않도록하는데 객체로는 받을 수 있게 한 것이 자바의 기본 규칙입니다. 왜? 객체로는 받을 수 있게 할까요? 동물 동물객체 = n..
Class, Object , Property, method 이러한 단어들 대체 뭔 차이인지 명확히 구분하지 못한다면 프로그래밍이 힘들어질 수 있습니다. 하지만 이것을 안다면 객체지향의 한걸음을 나아간다고 자부합니다. Class vs Object 무슨 차이일까요? 예전에 틀과 틀에서 만든 무언가라고 설명하는 책과 교수님들이 많았습니다. 이 말도 어찌보면 틀린 말은 아니오나, 설명의 첨가가 약간 부족하죠. 틀이 아니라면 대체 뭘까요? 간단히, 설명드리자면 Class는 본질, 개념이며, Object는 본질에서 나온 세상의 무언가를 말합니다. 예를 하나 들자면, 클래스가 인간이라면 객체는 인간인데 세상에서 알고있는 인간. 이름, 체중 등(프로퍼티)을 갖고있고, 활발히 세상을 나아가는 존재인 즉 우리들을 말합니다..
자바프로그래밍 개발과 구동) JDK로 만들어진 프로그램은 JRE에 의해 가상의 컴퓨터인 JVM 상에서 구동됩니다. 누가 만든 자바파일(Start.java) ->자바 번역기(컴파일러) -> Start.class(번역된 파일) -> JRE( OS마다 상이 ) -> JVM에 실행되는 구조입니다. JDK는 자바 소스 컴파일러인 javac.exe를 포함하고 있고, JRE는 자바 프로그램 실행기인 java.exe를 포함하고 있습니다. 이런 구조를 채택한 이유는 배포되는 설치 파일을 따로 준비하는 불편함을 없애기 위함입니다. 즉 개발자 원하는 플랫폼을 JVM이 중재자로서 구동되는데 문제가 없게 합니다. ( Write Once Run AnyWhere ) ** 그렇다면 절자척/구조적 프로그래밍이란 대체 무엇일까? 절차 ..
이 카테고리에 내용은, 스프링 입문을 위한 자바 객체지향의 원리와 이해에 대한 책 내용입니다. 개인적으로 책을 사서 정리를 하고있으며, 만약 블로그를 쓴 것에 문제를 제기하신다면 삭제하거나 비공개처리 하겠습니다. *** 컴퓨터가 이해할 수 있는 것이 뭘까요? 바로 0과 1만 을 사용하는 기계어, 2진법입니다. 인간은 2진법 뿐만 아니라 여러 진법을 사용할 수 있는 두뇌를 가집니다. 그런데 왜? 컴퓨터를 애용할까요? 멍청한데 말이죠? 그 이유는, 정확도와 속도입니다. 인간은 실수덩어리죠. 계산을 하다보면 실수를 하고, 속도 또한 시간이 지나면서 느려지죠. 그렇기 때문에 2가지를 겸비한 컴퓨터를 사용합니다. 하지만 여전히 0과 1 기계어만 사용하기에 너무 불편합니다. 그래서 좀 더 발전한 어셈블리어, 기계어..
- Total
- Today
- Yesterday
- https://jwprogramming.tistory.com/52
- Co
- https://react.vlpt.us/
- ㄴ
- https://wikidocs.net/68
- https://velog.io/@juno7803/React%EA%B0%80-%ED%83%9C%EC%96%B4%EB%82%9C-%EB%B0%B0%EA%B2%BD
- https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
- https://react.vlpt.us/basic/11-render-array.html
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |