본문 바로가기

분류 전체보기303

[Spring] 객체지향설계와 스프링 스프링에 객체지향 개념 이야기가 나오는 이유스프링은 DI(Dependency Injection)라는 의존관계 주입과 DI 컨테이너 제공으로 다형성 + OCP와 DIP를 가능하게 지원한다.클라이언트 코드의 변경 없이 기능 확장이 가능하다 스프링이 없던 시절엔 OCP와 DIP원칙을 지키면서 개발을 해보니 너무 할 일이 많았다. 이를 위해 프레임워크를 만들었다. 정리모든 설계에 역할과 구현을 분리하자공연으로 예를 들면 배역만 만들어두고 배우는 언제든지 유연하게 변경할 수 있도록 하는 것이 좋은 객체지향설계이다.이상적으로는 모든 설계에 인터페이스를 부여하자 실무적인 관점에서인터페이스를 도입하려면 추상화라는 비용이 발생한다. -> 예를 들어 특정 코드를 보기 위해 파일을 한번 더 열어보아야한다.따라서 기능을 확장.. 2024. 9. 15.
[Spring] 좋은 객체 지향 설계의 5가지 원칙(SOLID) SRP 단일 책임의 원칙한 클래스는 하나의 책임만 가져야한다.하나의 책임이라는 것은 모호중요한 기준은 변경이다. 변경이 있을 때 파급효과가 적으면 단일책임원칙을 잘 따른 것 OCP 개방-폐쇄 원칙확장에는 열려있으나 변경에는 닫혀 있어야한다.다형성을 활용해보면 이를 구현할 수 있다. -> 기존 코드는 그대로 두고 새로 이를 바탕으로 한 객체를 구현함으로써 해결인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현public class MemberService{ private MemberRepository memberRepository = new MemoryMemberRepository(); private MemberRepository memberRepository = new Jdb.. 2024. 9. 15.
[Spring] 좋은 객체 지향 프로그래밍이란? 객체지향특징추상화캡슐화상속다형성객체지향 프로그래밍프로그램을 여러개의 독립적인 단위 즉 객체들의 모임으로 파악한다. 객체는 메시지를 주고받을 수 있고, 데이터를 처리할 수 있다.객체지향프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들어서 대규모 소프으퉤어 개발에 많이 사용된다. 유연하고 변경이 용이? -> 레고블럭 조립하듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 다형성다형성을 실세계에 비유하면 운전자 입장에서 자동차라는 큰 틀이 있으면 그 자동차가 테슬라이던, 아반떼이던, 운전자의 역할을 그대로 할 수 있다.로미오와 줄리엣 연극에서 로미오의 역할을 맡은 배우는 줄리엣 역할의 배우가 누구던 영향을 받지 않는다.우리가 키보드의 브랜드를 바꾸어도 기존과 같이 일할 수 있다. 역할과 구현으.. 2024. 9. 15.
[Spring] 스프링이란? 스프링은 여러가지의 기술의 모음이다. 필수 : 스프링 프레임워크, 스프링 부트선택 : 스프링 데이터(CRUD도움), 스프링세션, 스프링 시큐리티(보안), 스프링 RestDocs(API문서화), 스프링 배치, 스프링 클라우드  스프링 프레임워크핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타웹 기술 : 스프링 mvc, 스프링 webflux데이터 접근 기술 : 트랜젝션, JDBC, ORM지원, XML지원기술 통합 : 캐시, 이메일, 원격접근, 스케줄링테스트 : 스프링 기반 테스트 지원언어 : 코틀린, 그루비이들을 통합해서 스프링 프레임워크라고 한다. 스프링 부트스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성tomcat 같은 웹.. 2024. 9. 13.
[BombLab] phase_6 해설 드디어 마지막이다!마지막인만큼 좀 길다ㅜㅜ phase_6 disassemble이제 이 부분을 보면 6개의 숫자를 입력받는 phase라는 것을 유추할 수 있다. 나는 임의로 1 2 3 4 5 6을 넣어보겠다. 위 코드들을 보면 $r13에 있는 수가 eax로 들어가고, eax에 있는 수에서 1이 한번 빼진 후 5와 비교를 한다.만약 6보다 작거나 같으면 52번으로 넘어가고 그렇지 않으면 폭탄이 터진다.그럼 r13에 우리가 입력한 값들이 들어있다는 것을 유추할 수 있다. 확인해보면맞다. 이를 통해 처음 입력하는 숫자는 6보다 작거나 같아야한다는 것을 알 수 있다. 여기서는 이중 반복문이 실행된다.(32에서 93, 65에서 87)52번으로 분기 한 후 r12d에 1을 더한다. 지금 r12에는 0이 들어있으니까 .. 2024. 9. 11.
[객체지향] 1장 : 협력하는 객체들의 공동체 내용 정리서론객체지향을 실세계의 모방으로 설명하는 것은 적합하지 않다. 하지만 많은 사람들이 이와 같은 방식을 채택하는 이유는 객체지향의 다양한 측면을 이해하고 학습하는데 매우 효과적이기 때문이다. 협력하는 사람들직장인이 카페에 가서 아메리카노를 시킨다.직장인은 캐시어에게 주문을 한다.캐시어는 직장인으로부터 받은 정보를 컵에 적어 바리스타에게 넘긴다.바리스타는 컵에 쓰여진대로 커피를 만든다.바리스타가 완성된 음료를 캐시어에게 넘긴다.캐시어는 진동벨을 울려 손님을 부른다.손님은 진동벨을 반납하고 음료를 가져간다. 위 과정에서는 역할, 책임, 협력이라는 세가지 개념이 어울려 조화를 이루고 있다. 각 사람은 손님, 바리스타, 캐시어라는 역할을 가지고 있다.각각은 협력하는 과정에서 자신이 맡은 책임을 다한다. .. 2024. 9. 10.