본문 바로가기

Java81

[JAVA얄코] Interface 1. 인터페이스 2. 인터페이스의 의미 3. 추상클래스의 구현 4. 사용 예제 - Hunter 인터페이스와 Mamal 추상클래스를 각 객체의 형으로 가지는 것이 둘 다 가능하다. - 인터페이스는 다수 적용할 수 있다 - 생성자가 없으므로 초기화 필수, 필드는 public static final (명시할 필요는 없음) - 메소드는 public abstract(명시할 필요 없음) - default 메소드로 기본 메소드를 정의할 수 있다. (개별 클래스에서 구현하지 않아도 사용 가능하다.) 2023. 11. 24.
[JAVA얄코] 추상 클래스 1. 추상클래스 - 스스로는 인스턴스를 만들 수 없음 (동물을 '포유류' 라고 불리는 동물은 없다.) - 자식클래스로 파생되기 위한 클래스 - 개/고양이/말 등의 클래스로서 인스턴스 생성 - 다형성, 추상화, 재사용 때문에 사용 2. 예제 - abstract 를 붙여서 class를 선언해준다. - abstract class YalcoGroup으로는 인스턴스를 만들지 못한다. - field는 protected 로 되어있어, 자식클래스가 물려받아 사용해야 하기 때문이다. - 추상클래스가 가지고 있는 abstract 메소드는 구현 되어있지 않다. 접근제어자가 의미가 없다. (스스로는 선언만 한다. 물려받을 자식들이 구현한다. 구현하지 않으면 안된다.) - 클래스 메소드는 추상메소드로 생성이 불가하다. (sta.. 2023. 11. 22.
[JAVA얄코] 다형성 1. 다형성 - 자식 인스턴스는 부모형 클래스를 따를 수 있으나 부모는 자식형을 따를 수 없다. 형제도 안됨. - 즉, 특정 자료형의 자리에 여러 종류가 들어올 수 있는 것이 다형성이다. 2. Object 클래스 : 모든 클래스의 조상이다. 3. 클래스에서의 final 키워드 - 수정이 불가한 final 키워드 - 클래스 내에서 final로 필드를 선언할 경우 생성자에서 반드시 초기화 해주어야 한다. - 다른 클래스에서 final로 지정해둔 필드를 수정하는 것이 당연하게도 불가능하다. - 메소드에 final 키워드가 붙은 경우 Override 도 불가능하다. - class에 final 키워드가 붙은 경우 extends 도 안된다. - final로 인스턴스를 만들 경우 인스턴스 자체 변경은 불가하지만, 내.. 2023. 11. 22.
[Spring 김영한] 기본예제 만들어보기 (서비스) 1. 서비스 만들기 - 디렉토리를 자주 만들어야하는 특성 상 나는 shift + command + P 를 사용해서 만들어야지! - /service/MemberService 를 만들어준다 - 참고 : command + option + V 누르면 알아서 리턴으로 바꿔준다 개꿀 - 위와같이 작성해준 후 이런 경우 method로 뽑아내는 것이 좋다 - 참고 : Command + Option + M 누르면 메서드 추출이 가능하다. - MemberService 전체를 다음과 같이 정리한다. 2. 회원 서비스 테스트 - 클래스에서 커맨드 + . 누르고 테스트 생성을 통해 편하게 생성할 수 있다. - 꿀팁 : 테스트케이스는 그냥 한글로 해도 상관 없다. 이거 좋네 - given - when - then 문법 사용하기 .. 2023. 11. 21.
[Spring 김영한] 기본예제 만들어보기 (리포지토리) 1. 비즈니스 요구사항 정리 - 데이터 : 회원ID, 이름 - 기능 : 회원 등록, 조회 - 가상의 시나리오 (DB 선정되지 않음) 2. 웹앱의 계층구조 - 컨트롤러 : 웹MVC의 컨트롤러 - 서비스 : 핵심 비즈니스 로직을 구현한 계층 - 리포지토리 : DB에 접근, 도메인 객체를 DB에 저장하고 관리 - 도메인 : 비즈니스 도메인 객체 3. 클래스의 의존관계 - MemberService : 서비스 구현 - MemberRepository : 인터페이스 - MemoryMemberRepository : 메모리모드로 메모리에 저장해서 DB를 대신하는 구현체 4. 회원 도메인과 리포지토리 만들기 - /domain/Member.class 에 멤버객체를 만들어줌 - /repository/MemberReposito.. 2023. 11. 21.
[JAVA얄코] 상속 1. Class의 상속 - 기본 예제 클래스 - 드라이브스루기능이 추가된 얄코치킨점을 내려면 ? - extends 키워드를 사용해 상속해서 사용한다. - 드라이브스루점 또한 홀 주문이 가능하다. 2. 메소드 Overriding - 부모와 자식 간의 메소드가 다름. - 자식에서 부모의 상속을 무시하고 새로 덮어씌운다. - @Override 어노테이션을 붙여놓는다. - super : 생성자 안에서 사용될 경우 부모의 생성자를 가리킨다. - super : 생성자 안에서 사용되지 않는 경우 부모 그 자체를 가리킨다. super.takeHallOrder() 처럼 사용이 가능하다. - super를 사용하는 경우 자식클래스의 생성자는 반드시 super로 시작해야한다. 2023. 11. 10.
[JAVA얄코] 접근 제어자 1. 접근 제어자 - 구성요소 중 일부만 밖으로 공개 - 캡슐화 encapsulation - 보안때문에만 감추는 것이 아님 - 중요한 것은 클래스 작성자의 의도와 인터페이스의 노출에 대한 설계이다. - 제한이 오히려 편리함을 제공하는 경우이다. (TypeScript같은거) 2. Getter 와 Setter 패턴 - 필드가 private이므로 getter와 setter를 통해 접근한다. - getter, setter 안에 유효성검사를 하기도 한다. - getter 에서 할인율을 적용한 값을 리턴하거나, name에 string을 추가하거나 하는 추가 작업도 간단하게 가능하다. - cmd + N 단축키를 이용해 편리하게 생성 가능하다. 2023. 11. 10.
[Spring 김영한] Spring 웹개발 기초 1. 정적 컨텐츠 (전통.html) - 'resources/static/' 에서 자동으로 제공한다. 2. MVC와 템플릿 엔진 (SSR) - MVC : Model View Controller - Controller : 내부적 로직처리 , @Controller 어노테이션이 들어간거. class 파일 - View : 렌더링만 하기 위함, Template 엔진 파일 (thyme 같은거) - HelloController 에 컨트롤러 추가해서 파라미터받아보기 - 이 패턴의 핵심은 html을 template 엔진으로 조작해서 조작된 html을 클라이언트에게 보내준다는 것 3. API (React/Vue) (CSR) - 쉽게 말해 데이터만 보내준다 - 실질적으로 제일 중요함 - HelloController에 추가해본.. 2023. 11. 10.