본문 바로가기

분류 전체보기312

[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.
[BombLab] phase_5 해설 이제 phase_5 해설을 해보겠다. phase_5 disassemblephase_5의 전체적인 코드는 위와 같다.나는 임의로 hispgs를 입력하였다. 를 보면 string_length를 호출하고 리턴값인 eax의 값이 6인지 확인한다.이를 통해 입력되어야 하는 값은 6글자의 string이라는 것을 유추할 수 있다. 그 다음 쭉 내려가보면 eax에 0을 넣는 과정을 거치고 41번부터 70번을 6회 반복한다. 이를 통해 한 글자씩 어떤 변형을 하는구나! 라는 것을 알 수 있다. 이후 strings_not_equal을 통해서 두 string을 비교한다. 이건 phase_1에도 나온 함수이다.이 떄 esi에 특정 주소에 있는 값을 넣는다. 이 값을 꺼내보면flyers라는 string이 나온 걸 볼 수 있다... 2024. 9. 10.