_

Always be tactful

전체 글 89

[🦁3] 객체 지향 설계: OOP

시청할 것우아한객체지향이번 주 키워드 정리상속(Inheritance) vs 조합(Composition)1. 상속(Inheritance)부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 방식코드 재사용성이 높지만, 부모 클래스에 종속되어 강한 결합(High Coupling) 발생부모 클래스가 변경되면 자식 클래스에도 영향을 미쳐 유지보수가 어려워질 수 있음2. 조합(Composition)기존 클래스를 포함(Has-A 관계)하여 기능을 재사용하는 방식강한 결합을 피할 수 있어 유지보수가 용이하고 유연성이 높음상속보다 유연하며, 런타임 시 객체를 변경할 수도 있음🚀 언제 사용해야 할까?상속: 명확한 "is-a" 관계(예: Car is a Vehicle)조합: 유연한 "has-a" 관계(예: Car has..

드래그 방지 해제하기

어, 승준이형이야. 가끔 공부하다 보면 다른 사람 블로그에서 코드 참고할 때 있지?쓰라고 해놓고, 정작 드래그를 막아놔서 복사할 수가 없는 이상한 블로그들이 있어. 크롬 기준이고, 3초면 해결하니까 이번 기회에 알아두자.1. 개발자 도구 열기 (F12, Ctrl + Shift + I)단축키가 같은진 모르겠어.우측 상단에 점 세 개 있는 거 누르고 `도구 더보기` → `개발자 도구` 순으로 찾아서 열어도 돼. 2. Settings 접근하기 (F1)우측 상단에 톱니바퀴 눌러도 돼. 3. JavaScript 해제하기쭉 내려서 Debugger 블록 찾고, `Disable JavaScript` 체크하면 끝이야.원래는 코드를 찾아서 수정해줘도 되는데, 우린 귀찮으니까 그냥 자바스크립트를 해제하고 쓰자.

무분별한 Getter & Setter 사용은 OOP 원칙을 위배한다.

들어가기에 앞서, 우리는 Getter와 Setter에 대해 학습했다. OOP 원칙 중 캡슐화에 대해 인지하였고, 따라서 Setter 사용을 지양해야 한다는 것 정도는 이미 알고 있는 사실이다. 그렇다면 왜 Getter 사용도 지양해야 하는 걸까?또는, Setter를 지양해야 하는 명확한 이유는 뭘까?Getter와 Setter의 탄생 객체 지향은 정보 은닉에서 시작한다.객체 지향 언어의 장점은 물론 다양하겠지만, 가장 큰 장점 중 하나가 유연성이다. 이러한 설계 방식은 변화하는 요구사항에 쉽게 대응할 수 있도록 한다. 유연성을 가능하게 하는 요소는 무엇일까?바로, 1. 캡슐화 2. 상속 3. 다형성이다. 그중 캡슐화, 이하 정보 은닉은 내부 구현을 숨기고 필요한 부분만 외부에 공개하도록 한다. 외부 코드가..

[CS] 컴퓨터의 연산 방식 (feat. 1의 보수 & 2의 보수)

들어가기에 앞서,컴파일이란 무엇인가?  C, C++, Java, Python 같이 우리가 일반적으로 사용하는 프로그래밍 언어를 고급 언어라고 하며, 기계어와 어셈블리어를 저급 언어라고 한다. 가장 쉬운 구분법은 해당 언어가 인간친화적인지 기계친화적인지를 따지는 것이다.  인간친화적인 고급 언어는 우리가 읽고 쓰기 편하지만 이를 그대로 전달한다면 컴퓨터는 이해할 수 없다. 이유를 간단히 설명하자면, 컴퓨터는 전기 신호를 바탕으로 이해하는데 이를 `있다(1)`와 `없다(0)` 정도로만 구분하기 때문이다.  CPU가 직접 해석하고 실행할 수 있도록, 사람이 작성한 고급 언어인 `코드`를 `기계어`로 번역하는 것을 `컴파일`이라고 한다.소스 코드를 실행 가능한 파일로 만드는 전체 과정을 `빌드`라고 하며, 컴파..

개인 학습/CS 2025.03.26

[Spring] OOP: SOLID 원칙

Object-Oriented Programming 👉 객체지향 프로그래밍을 위한 다섯 가지 중요한 설계 원칙을 SOLID 원칙이라고 한다. *더보기는 관련 예시임 1. Single Responsibility Principle (단일 책임 원칙)하나의 클래스는 단 하나의 책임만 가져야 한다.즉, 여러 기능을 한 클래스에서 처리하지 않는다.더보기✅ 정보 저장 기능과 정보 출력 기능을 별도의 클래스로 분리2. Open/Closed Principle (개방-폐쇄 원칙)확장에는 열려 있고, 수정에는 닫혀 있어야 한다.즉, 기존 코드를 변경하지 않고 새로운 기능을 추가할 수 있도록 설계한다.더보기✅ 조건문 대신, 인터페이스나 추상 클래스를 사용하여 새로운 기능을 확장3. Liskov Substitution Pri..

고독한 개발 일기 #1

스프링이 뭔지도 모르는 이의 엉망진창 개발 일지입니다.읽지 않는 것을 추천드리오나, 고통에 몸부림치는 뉴비의 일기장이 궁금하다면 말리지 않습니다.2025-03-231:57 프로그램을 짤 때, 일단 컨트롤러부터 만든다고 한다.그래서 controller 패키지에 있던 ReservationController를 열었다. 가장 먼저, 필요한 어노테이션을 작성하라는 문구가 보였다.일단 컨트롤러니까 컨트롤러라고 명시했다.@Controller메서드에서 HTML 파일을 반환할 때 사용한다더라.지금 내가 갖고 있는 `index.html`이나 `revervation_form.html` 말하는 것 같다. 만약에 JSON을 반환해야 한다면 @RestController를 써야 한다더라.물론 이번 프로젝트는 웹 페이지를 렌더링하는..