Java 89

[JAVA] 타입 변환과 다형성 (1) - 자동타입변환 (Promotion) 2024.08.03

다형성 : 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질 ⭐ 코드 측면에서의 다형성 ➡ 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해줌 ⭐ 자바는 부모 클래스로의 타입 변환을 허용 ➡ 부모 타입에 모든 자식 객체가 대입될 수 있음 클래스 타입의 변환 EX)public class Car { Tire t1 = new HankkokTire(); //자식 객체 대입 Tire t2 = new KumhoTire();}   자동 타입 변환 (Promotion)프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것   자동 타입 변환 EX) Cat cat = new Cat();Animal animal = cat; //Animal animal = new Cat(..

[JAVA] protected 접근 제한자 2024.07.30

접근 제한적용 대상접근할 수 없는 클래스public클래스, 필드, 생성자, 메소드없음protected필드, 생성자, 메소드자식 클래스가 아닌 다른 패키지에 소속된 클래스default클래스, 필드, 생성자, 메소드다른 패키지에 소속된 클래스private필드, 생성자, 메소드모든 외부 클래스 public과 default 접근 제한자의 중간쯤에 해당필드, 생성자, 메소드 선언에 사용될 수 있음같은 패키지에서는 defualt와 같이 접근 제한이 없지만 다른 패키지에서는 자식 클래스만 접근을 허용함 protected 접근제한자 EX)package package1;public class A { protected String field; protected A() { } protected void method(..

[JAVA] final 클래스와 final 메소드 2024.07.30

final 키워드클래스 필드, 메소드 선언시에 사용할 수 있음해당 선언이 최종 상태이며, 결코 수정될 수 없음을 뜻함클래스, 필드, 메소드 선언에 사용될 경우 해석이 조금씩 달라짐final 필드 : 초기값 설정 후, 더이상 값을 변경할 수 없는 필드final 메소드 : overriding 할 수 없는 메소드final 클래스 : 상속할 수 없는 클래스 final 클래스클래스 선언 시에 final 키워드를 class 앞에 붙이게 되면 상속 할 수 없는 클래스가 됨public final class 클래스 { ... } final 클래스 EX)//[Member.java] final 클래스public final class Member { ...} //[VIPMember.java]public final cla..

[JAVA] 부모 메소드 호출 (super) 2024.07.30

자식 클래스에서 부모 클래스의 메소드를 오버라이딩 ➡ 부모 클래스의 메소드는 숨겨짐, 오버라이딩된 자식 메소드만 사용됨클래스 내부에서 오버라이딩된 부모 클래스의 메소드를 호출해야하는 상황이 발생한다면?➡ 명시적으로 super 키워드를 붙여 부모 메소드를 호출‼ super는 부모 객체를 참조하고 있기 때문에 부모 메소드에 직접 접근할 수 있음  super.부모메소드();   부모 메소드 호출 EX) //[Airplane.java] - 부모 클래스public class Airplane { public void land() { System.out.println("착륙합니다."); } public void fly() { System.out.println("일반비행합니다...

[MVC 패턴] Java로 MVC패턴 구현하기 (4) - 응집도 높이기 2022.12.28

높은 응집도 ➡ 같은 로직이라면 묶어서 관리 모듈화 횡단관심 [MVC 패턴] Java로 MVC 패턴 구현하기 (3) - DB 연결 테이블 생성 회원 테이블 생성 CREATE TABLE MEMBER( NUM INT PRIMARY KEY, NAME VARCHAR(20) NOT NULL, AGE INT DEFAULT 20 ); MemberVO 테이블의 Column와 VO의 필드가 매칭되도록 작성 public class MemberVO { private int num; private Stri bean-soup-99.tistory.com 여기서 작성한 코드를 보면 각각의 비즈니스 로직 (CRUD)에서 동일한 코드가 반복되고 있음을 볼 수 있음 DB 연결 로직 / 해제 로직 / 인증 로직을 따로 만들어야 함 ⭐ 이..

[MVC 패턴] Java로 MVC 패턴 구현하기 (3) - DB 연결 2022.12.27

테이블 생성 회원 테이블 생성 CREATE TABLE MEMBER( NUM INT PRIMARY KEY, NAME VARCHAR(20) NOT NULL, AGE INT DEFAULT 20 ); MemberVO 테이블의 Column와 VO의 필드가 매칭되도록 작성 public class MemberVO { private int num; private String name; private int age; public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getName() { return name; } public void setName(String name) { this.name = ..

[JAVA] JDBC 2022.12.27

JDBC라는 API를 이용하여 JAVA언어에서 데이터베이스를 연동할 수 있음 즉 host language로 자바를 사용하고 데이터베이스에 접근할 때는 SQL언어를 사용함 JDBC에서 정의된 추상 클래스 1) DB에 접근하기위해 DriverManager Class에 해당하는 Drive 설정 2) Drive 설정 후 getConnection 메소드를통해 Connection 객체를 얻음 3) Connection 객체를 얻은 후 statement 생성 - 트랜잭션 처리를 해야하는데 처리를 하고자하는 명령어가 있어야 함 ( = 즉, query를 만들어야 함) JDBC에서 사용할 수 있는 query 종류 Statement Prepared Statement Callable Statement 4) setXXX XXX는..

[MVC 패턴] Java로 MVC 패턴 구현하기 (2) - 결합도 낮추기 2022.12.16

유지보수가 용이한 코드 결합도가 낮고, 응집도는 높은 코드 결합도 코드 사이의 관계성 1가지의 수정사항이 발생했을 때, 얼마나 코드를 변경해야하는가? 응집도 로직에 관한 사항 같은 로직을 가지는 코드를 모듈화하여 관리하기 결합도 낮추기 [MVC 패턴] Java로 MVC 패턴 구현하기 (1) MVC 패턴 이란? [12/13] MVC 패턴 웹 어플리케이션의 아키텍쳐 모델 1 JSP + JavaBeans (Service) : 뷰와 로직이 섞여있음 장점 단점 구조가 단순함 - 출력과 로직 코드가 섞여 JSP 코드가 복잡해짐 - 프런트와 bean-soup-99.tistory.com 여기서 작성한 코드는 DAO에서 인자가 계속 변경되고 있음 메서드 시그니쳐가 자주 변경됨 == 결합도가 매우 높다는 것 EX) 만약,..

[MVC 패턴] Java로 MVC 패턴 구현하기 (1) 2022.12.16

MVC 패턴 이란? [12/13] MVC 패턴 웹 어플리케이션의 아키텍쳐 모델 1 JSP + JavaBeans (Service) : 뷰와 로직이 섞여있음 장점 단점 구조가 단순함 - 출력과 로직 코드가 섞여 JSP 코드가 복잡해짐 - 프런트와 백엔드가 혼재되어 분할이 bean-soup-99.tistory.com [Software Engineering] MVC MVC (Model-View-Controller)는 사용자 인터페이스로부터 비즈니스 로직을 분리 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 스타일의 아키 bean-soup-99.tistory.com MVC 패턴을 적용하여 Java로 학생부 프로그램을 만들어보자 설계 1) Model 설계 St..

[Java] 메소드 재정의 (@Override) 2022.12.12

부모 클래스의 모든 메소드가 자식 클래스에게 맞게 설계되어 있다면 가장 이상적인 상속임어떤 메소드는 자식 클래스가 사용하기에 적합하지 않을 수 있음상속된 일부 메소드는 자식 클래스에서 다시 수정해서 사용해야 함자바는 이런 경우를 위해 메소드 오버라이딩 (Overriding)기능을 제공함 Override메소드 오버라이딩: 상속된 메소드의 내용이 자식 클래스에 맞지 않을 경우, 자식 클래스에서 동일한 메소드를 재정의하는 것메소드가 오버라이딩되었다면 부모 객체의 메소드는 숨겨짐➡ 자식 객체에서 메소드를 호출하면 오버라이딩된 자식 메소드가 호출 됨 메소드를 오버라이딩할 때는 다음과 같은 규칙에 주의해야 함부모의 메소드와 동일한 시그니쳐 (리턴 타입, 메소드 이름, 매개 변수 리스트)를 가져야 함접근 제한을 더 ..