수준별로 반을 나눴었는데 다른 반 수업 한걸 한번 보기로 했다
간단하게 한번 정리했다
상속: 객체지향 프로그래밍의 핵심,
상속 정말 중요하다
상속(Inheritance)이란?
마치 가족 간에 특징이 전달되듯, 상속은 한 클래스(우리가 부르는 '부모 클래스')의 기능을
다른 클래스('자식 클래스')가 물려받는 과정
예제
class Parent { ... }
class Child extends Parent { ... }
Parent pa = new Parent(); // 허용
Child ch = new Child(); // 허용
Parent pc = new Child(); // 허용
Child cp = new Parent(); // 오류 발생.
코드 재사용성 향상
중복이 제거되고 , 효율이 증가한다
코드를 줄이고, 유지 보수와 개발 시간을 단축시킬 수 있다
확장성과 유연성
상속을 통해 기능을 그대로 유지하면서 새로운 기능을 추가하거나 변경 가능
더욱 확장하고 유연하게 만들어 줌
다형성
다형성 , 엄청 중요하다.
상속은 하나의 타입이 여러 형태를 가질 수 있는 능력의 기초다
부모 클래스의 타입으로 자식 클래스의 객체를 다룰 수 있으니 프로그램 범위가 up
예시 코드
class Animal {
public void makeSound() {
System.out.println("동물 소리!");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("멍멍");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("야옹");
}
}
public class Main {
public static void main(String[] args) {
Animal[] animals = {new Dog(), new Cat()};
for (Animal animal : animals) {
animal.makeSound();
}
}
}
설계 원칙과 상속
개방-폐쇄 원칙의 실현 ,뭐냐 ?
상속은 확장에는 열려있지만, 변경에는 닫혀 있어야 한다 .
상속 (Extends)
class 자식 클래스명 extends 부모 클래스명 <<
이렇게 사용하면 자식은 부모의 모든 기능을 물려받는다
상속의 결과
재사용성 + 계층적 구조
자식 클래스는 부모 클래스의 모든 public과 protected 멤버에 접근 가능
생성자와 상속
상속 시 자식 클래스 생성자는 부모 클래스의 기본 생성자를 자동으로 호출
파라미터가 있는 생성자를 사용할 때는 super 키워드를 사용해서 부모의 생성자를 명시적 호출
부모 클래스의 특정 생성자를 선택적으로 사용 가능
네이밍 컨벤션
패키지 이름은 소문자로 구성
패키지 이름은 소문자를 사용하여 작성한다. 단어별 구문을 위해 언더 스코어(_)나 대문자를 섞지 않는다
//좋은 예
package com.navercorp.apigateway
//나쁜 예
package com.navercorp.apiGateway
package com.navercorp.api_gateway
클래스 이름은 명사나 명사절로 짓는다. << 이름 생각하는 게 제일 힘듦
메서드 이름은 동사/전치사로 시작
다른 타입으로 전환하는 메서드나 빌더 패턴을 구현한 클래스의 메서드에는 전치사를 쓸 수 있다
클래스/인터페이스 이름에 대문자 카멜표기법 적용
클래스 이름은 단어의 첫 글자를 대문자로 시작하는 대문자 카멜표기법(Upper camel case)을 사용한다
//나쁜 예
public class reservation
public class Accesstoken
//좋은 예
public class Reservation
public class AccessToken
배열의 특징은?
1. 고정 크기: 배열은 초기화 시 크기가 고정되며, 이후 크기를 변경할 수 없습니다
2. 동일한 타입: 배열은 동일한 데이터 타입의 요소만 저장할 수 있습니다
3. 인덱스 접근: 배열 요소는 인덱스를 사용하여 빠르게 접근할 수 있습니다
4. 간단한 구조: 배열은 구조가 간단하여 메모리 효율이 좋고 성능이 빠릅니다
JAVA Collection
동적 크기: 컬렉션은 필요에 따라 크기가 자동으로 조정됩니다.
유연한 데이터 타입: 제네릭을 사용하여 다양한 타입의 데이터를 저장할 수 있습니다.
다양한 데이터 구조:다양한 요구사항에 맞는 여러 데이터 구조를 제공합니다.
풍부한 메서드: 데이터 조작을 위한 다양한 메서드를 제공합니다 (삽입, 삭제, 검색 등).
이 사진 좋은 거 같다. 한눈에 확인이 가능하다.
컬렉션에서 래퍼 클래스를 사용하는 이유
1. 객체 지향 설계: 자바의 컬렉션 프레임워크는 객체를 다루도록 설계되었습니다.
원시 타입은 객체가 아니기 때문에, 컬렉션 프레임워크에서 사용할 수 없습니다.
2. 기능 확장: 래퍼 클래스는 원시 타입에 없는 여러 메서드들을 제공합니다.
예를 들어, **`Integer`** 클래스는 **`parseInt`**와 같은 유용한 메서드를 제공합니다.
3. 제네릭 사용:자바의 제네릭은 객체 타입을 요구합니다.
원시 타입은 제네릭 타입 파라미터로 사용할 수 없으므로, 래퍼 클래스를 사용해야 합니다.
4. 값의 불변성: 래퍼 클래스는 불변 객체입니다. 한 번 생성된 값은 변경할 수 없으며,
이는 다중 스레드 환경에서 안전하게 사용할 수 있는 장점이 있습니다.
오늘부터 팀 프로젝트를 시작했다
개인과제를 기반으로 뉴스피드 프로젝트다.
우리 조는 맛집 소개로 정했다.
나 빼고 나머지 4분이 다 잘하시는거 같다.
나는 게시글에 쓸 수 있는 댓글 crud 기능 + 스웨거 적용이다
한 번에 감은 안 잡히지만 api와 erd 그리고 배운 것들을 한번 잘 적용해 봐야겠다
엔티티와 요구사항 보며 열심히 구현하고 이 구현이 빨리 끝난다면
내가 도울 수 있을진 모르겠지만 다른 팀원분들 꺼도 잘 도와서 프로젝트 잘 끝내야겠다
댓글작성 api 기능/Method/url/request/response/맡은사람 순이다.
기능 구현전 짠 ERD다. 와이어 프레임도 짜고 했다~
내일부터 열심히 구현해야겠다 파이팅~~~
'TIL' 카테고리의 다른 글
TIL - 2024/06/07 (0) | 2024.06.07 |
---|---|
TIL - 2024/06/05 (0) | 2024.06.05 |
TIL - 2024/06/03 (0) | 2024.06.03 |
TIL - 2024/05/31 (0) | 2024.05.31 |
TIL - 2024/05/30 (0) | 2024.05.30 |