반응형 Back-End/Spring Boot24 예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해 어댑터 패턴(Adapter pattern) 한 클래스의 인터페이스를 클라이언트에서 사용하고자 다른 인터페이스로 변환하는 패턴 서로 관계없는 인터페이스들을 함께 사용할 수 있게 하는 패턴 호출당하는 쪽의 메소드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴 자바 코어 라이브러리의 몇가지 표준 어댑터 예시 java.io.InputStreamReader(InputStream) java.io.OutputStreamWriter(OutputStream) 예) 둥근 구멍들에 정사각형 못들을 맞추기 → 둥근 구멍, 정사각형 못, 정사각형 못을 둥근 구멍에 맞춰주는 어댑터, 클라이언트 사용 코드 등이 필요함 프록시 패턴(Proxy Pattern) 프록시 : 대리자, 대변인이라는 뜻 대리자를 사용하.. 2023. 4. 18. 예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해 SOLID 객체 지향 프로그래밍 및 설계의 다섯가지 기본 원칙 응집도는 높이고, 결합도는 낮춰라 SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open Closed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존 역전 원칙 결합도 모듈(클래스) 간의 상호 의존 정도 결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이하다. 응집도 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련.. 2023. 4. 17. 예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해 생성자리턴타입이 없는 메소드(void도 없음)개발자가 아무런 생성자도 만들지 않으면 자바는 인자가 없는 기본 생성자를 자동으로 만들어 준다.매개값이 있는 생성자를 하나라도 만든다면 자바는 기본 생성자를 만들어주지 않는다. static 블록클래스가 메모리로 로딩될 때 자동으로 실행계산 작업을 하고나서 그 결과를 static 변수의 초기값으로 주고 싶을 때 사용객체 생성 없이도 사용할 수 있기 때문에 생성자에서 초기화 작업을 하지 않는다. final 키워드클래스에 final → 상속 허용하지 않음변수에 final → 한 번 초기화 되면 값을 변경할 수 없음메소드에 final → 오버라이딩 허용하지 않음 this 키워드지역변수와 속성(객체 변수, 정적 변수)의 이름이 같은 경우 지역 변수가 우선한다.객체 변수.. 2023. 4. 16. 예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해 객체지향의 상속상위 클래스의 특성을 재사용하는 것상위 클래스의 특성을 확장하는 것is a kind of 관계를 만족해야 한다 인터페이스인터페이스 : be able to 코드를 인간의 언어로 번역하면서 읽기 부모타입으로 생성된 객체가 있을 때 부모클래스의 메소드를 호출하더라도 오버라이딩 된 자식클래스의 메소드가 호출되는 이유자바에서는 다형성을 지원하기 위해 가상 함수 테이블(virtual function table)이라는 개념을 사용한다. 부모 클래스와 자식 클래스에서 모두 같은 이름을 가진 메소드가 존재할 경우, 자식 클래스에서 오버라이딩된 메소드의 주소를 가상 함수 테이블에 저장한다. 이렇게 저장된 가상 함수 테이블은 실제 객체의 타입에 따라 적절한 메소드를 호출하기 위해 사용된다. 정적멤버 접근의 정.. 2023. 4. 15. 예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해 객체 지향의 4대 특성 캡! 상추다 캡슐화(Encapsulation) : 정보 은닉 상속(Inheritance) : 재사용, 확장, 세분화 (extends) 추상화(Abstraction) : 모델링 다형성(Polymorphism) : 사용 편의 클래스와 객체의 구분 객체: 세상에 존재하는 유일무이한 사물 → 따라서 속성에 값을 가지고 있음 클래스: 분류, 집합, 같은 속성과 기능을 가진 객체를 총칭하는 개념 → 따라서 속성에 값을 가질 수 없다 클래스와 객체의 구분은 개념과 실체로 구분할 수 있다. 예를들어 사람과 김연아가 있을 때 사람은 '개념'이고 김연아는 '실체' 이다. 클래스는 '개념', 객체는 '실체' 이므로 '클래스:객체 = 사람:김연아'의 관계가 성립된다. 사람 줄리엣 = new 사람(); .. 2023. 4. 13. 예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해 기계어의 특징 0과 1의 2진수 형태로 표현됨 수행시간이 빠름 CPU마다 기계어가 다름 어셈블리어 니모닉(Mnemonic)과 기계어의 일대일 매칭 코드표 CPU마다 기계어가 다르기때문에 어셈블리어도 기계어에 따라 다름 어셈블리어를 기계어로 번역해 주는 소프트웨어를 ‘어셈블러’ 라고 함 C언어 수학적 기호 사용 기종이 몇개든 단 하나의 소스파일을 가짐 컴파일러로 소스를 번역하여 목적파일 생성함 컴포넌트 재사용 가능한 독립된 모듈 const == final → 따라서 자바에서는 const 키워드를 사용하지 않음 함수와 메소드의 차이 함수와 메소드는 크게 다른점이 없지만 굳이 차이점을 찾는다면, 함수는 클래스나 객체와 아무 관계없이 존재할 수 있지만 메소드는 반드시 클래스 정의 안에 존재해야 한다는 것이다. .. 2023. 4. 12. 이전 1 2 3 다음 반응형