토이프로젝트 - allt
23.05.19
J1-H00N
2023. 5. 19. 16:57
package nadocoding.Chap_07;
import nadocoding.Chap_07.Camera.ActionCam;
import nadocoding.Chap_07.Camera.SlowActionCam;
public class _17_Final {
public static void main(String[] args) {
// Final : 해당클래스 내에서도 값을 바꿀 수 없게 만들기
// public (final) class
// public (final) void
// public > abstract > static > final > ...
ActionCam actionCam = new ActionCam();
// actionCam.lens = "표준렌즈";
actionCam.recordVideo();
actionCam.makeVideo();
System.out.println("----------------------------------");
SlowActionCam slowActionCam = new SlowActionCam();
// slowActionCam.recordVideo();
slowActionCam.makeVideo();
}
}
package nadocoding.Chap_07.Camera;
public final class ActionCam extends Camera { // class에 final을 선언하면 상속도 불가능
// _17
public final String lens; // = "광각렌즈"; // 선언과 동시에 초기화도 가능
public ActionCam() {
super("액션 카메라");
lens = "광각렌즈"; // 선언을 미리 해두고 나중에 초기화 할 수 도 있음. 단, final 이기에 한 번 만 가능
}
public final void makeVideo() { // 메소드에 final을 선언시 메소드 내 내용도 수정 불가능
// this.lens = "값 변경"; // final 때문에 불가
System.out.println(this.name + " : " + this.lens + "로 촬영한 영상을 통해 멋진 비디오를 제작합니다.");
}
}
package nadocoding.Chap_07.Camera;
//public class SlowActionCam extends ActionCam {
// // _17
// public SlowActionCam() {
// this.name = "슬로우 액션 카메라";
// }
//
// public void makeVideo() { // final로 인해 메소드 오버라이딩도 불가능해짐
// // this.lens = "값 변경"; // final 때문에 불가
// System.out.println(this.name + " : "
// + this.lens + "로 촬영한 영상을 통해 멋진 슬로우모드 비디오를 제작합니다.");
// }
//}
public class SlowActionCam{ // 상속을 받지 못해 일일히 만들어야함.
public String name;
public SlowActionCam() {
this.name = "슬로우 액션 카메라";
}
public void makeVideo() {
System.out.println("자체개발한 비디오 제작 기능");
}
}
package nadocoding.Chap_07;
public class _18_Enum {
public static void main(String[] args) {
// 열거형 (Enum)
// 달력 : Jan, Feb, Mar, ...
// 옷 사이즈 : XL, L, M, ...
// OS 종류 : Win10, Win11, MacOS, LINUX, ...
// 해상도 : HD, FHD, QHD, UHD, ...
Resolution resolution = Resolution.HD; // 다른 객체 생성처럼 new ~~~() 형태가 아닌 ~~~.@@ 형태로 쓰임
System.out.println(resolution); // HD
resolution = Resolution.FHD;
System.out.println(resolution); // FHD
// 스위치문이 많이 사용됨
System.out.print("동영상 녹화 품질 : ");
switch (resolution) {
case HD:
System.out.println("일반화질");
break;
case FHD:
System.out.println("고화질");
break;
case UHD:
System.out.println("초고화질");
break;
// 동영상 녹화 품질 : 고화질
}
resolution = Resolution.valueOf("UHD"); // 값을 읽어 열겨형으로 바꿔서 저장
System.out.println(resolution); // UHD
System.out.println("---------------------");
for (Resolution myRes : Resolution.values()) { // 열거형에 저장되어있는 값 불러오기
System.out.println(myRes.name() + " : " + myRes.ordinal()); // .name() 열거형에 있는 이름 전달, .ordinal() 순서 전달
}
// HD : 0
// FHD : 1
// UHD : 2
System.out.println("---------------------");
for (Resolution myRes: Resolution.values()) {
System.out.println(myRes.name() + " : " + myRes.getWidth());
}
// HD : 1280
// FHD : 1920
// UHD : 3840
}
}
enum Resolution {
HD(1280), FHD(1920), UHD(3840);
// 각 열거형에 추가 값 저장
private final int width;
Resolution(int width) {
this.width = width;
}
public int getWidth() {
return width;
}
}
다른 팀의 발표에서 배운 점
1. 기술적 문제를 해결하기 위한 여러 방안 모색
2. 이슈 정리의 중요성
3. rest api의 기본 4가지 crud(create, read, update, delete)
4. rest api와 branch 명을 더 자세하게 만들기
5. get과 post등의 기능에 너무 의존하지 않고 경우에 따라 프론트엔드에서 구현하는게 더 효율적일 수 있음
6. 애니메이션, 디자인으로 사용자가 알아보기 쉽게 만드는 요소를 추가하는 점
7. 용도에 맞는 get, post 등 설정
8. 저작권!!
9. api 명세서 url은 더 상세하게, 알아보기 쉽게
우리 조의 피드백에서 배운 점
협업에 대한 어려움은 경험을 통해 해결할 수 있다!
api문서를 작설할 때 value에 예시뿐만 아니라 type(String, int, ...)을 넣는걸 선호한다