본문 바로가기

Backend

(31)
[패캠/JAVA] Static 이해하기 왜 메인(main) 클래스는 객체 생성 없이 실행이 될까? main클래스 동작 방식 ① JVM이 실행할 클래스를 찾는다. ② static 키워드가 붙어있는 멤버들을 정해진 메모리(static-zone) 위치에 한번 자동으로 로딩 한다. → static멤버들은 클래스를 사용하는 시점에서 딱 한번 메모리에 로딩된다는 점이 중요하다. → 여기서는 main() 메서드가 static 이기 때문에 메모리에 자동으로 로딩 한다. ③ JVM이 static-zone에서 main()메서드를 호출한다. ④ 호출된 메서드를 Call Stack Frame Area(Stack Area)에 push(기계어코드를 넣고) 한 뒤 동작을 시작한다 Call Stack Frame Area(Stack Area)란? - 메서드가 호출되면 호출..
[패캠/JAVA] VO(DTO)클래스 잘 설계하기 DTO,VO 클래스(Data Transfer Object, Value Object) 데이터를 하나로 묶어야 될 경우, 데이터를 하나로 수집하는 역할 클래스를 설계할때는 정보은닉에 대해서 생각해 봐야한다. 정보은닉이란? 다른 객체에게 자신의 정보를 숨기고 자신의 동작,기능, 연산만을 통해 접근을 허용하는 것으로, 클래스 외부에서 특정 정보에 접근을 막는다는 의미 [객체 사용하는 순서: 객체 설계(모델링) -> 객체 생성 -> 객체 사용(접근)] 객체지향프로그래밍에서는 객체를 설계 할 때 상태정보를 정보은닉 시킨다. 정보은닉 된 정보에 접근하는 방법 1. setter, getter 메서드를 통한 접근 getter, setter 메서드 선언 setter 메서드로 값을 저장하고 set + 멤버변수의 첫 영문을 ..
[패캠/JAVA] 자바 패키지(Package) 패키지란? 서로 기능이 비슷한 클래스들끼리 모아서 관리하기 위하여 사용 -> 폴더 같은 느낌 패키지 외부에서 클래스의 접근을 할 수 없도록 하기 위해서 사용 아래는 자바에서 제공해주는 API(이도 패키지의 형태로 배포된다) 패키지 이름 설명 java.lang 자바에서 자주 사용하는 클래스(String, System 등) java.io 입출력 관련 클래스(InputStream 등 java.net 네트워킹 관련 클래스 java.util 도움을 주는 클래스(Scanner 등) java.sql 데이터베이스 관련 클래스, SQL java.math 수학관련 클래스 클래스를 접근하려면 만들어진 위치(-> 패키지)와 접근제어를 알아야한다. 클래스 접근하는 방법 2 가지 ① 클래스 전체이름(class full name)..
[패캠/JAVA] 객체 접근 권한 객체 상호간에 접근 제어 필요한 이유 - 객체의 상태정보는 중요하기 때문에 접근을 못하게 해야 된다.(정보은닉) - 객체의 행위정보는 상호작용을 해야 되기 때문에 접근을 허용한다 접근 제어 방법 4가지의 접근제한자(Access Modifier)를 사용 클래스와 클래스 내부에서 만들어지는 멤버에 접근 제한자를 사용할 수 있다 public: 모든 패키지에서 접근가능 (모든 클래스는 public-> 클래스를 private로 만드는건 그 클래스를 다른 곳에서 쓸 수 없기 때문에 클래스를 만드는 의미가 없다. ) (모든 멤버메서드는 public) private: 모든 패키지에서 접근불가 (자기 자신만 접근 가능) (모든 멤버변수는 private) protected: 상속관계에서 하위클래스에서 상위클래스 접근가능 ..
[패캠/JAVA]클래스(모델)의 종류 모델이란? 객체지향프로그래밍에서 클래스를 역할에 따라 부르는 이름을 모델(Model)이라고 부른다. 역할에 따라 다양한 모델을 만들어 사용할 수 있다 DTO,VO 클래스(Data Transfer Object, Value Object) 데이터를 하나로 묶어야 될 경우, 데이터를 하나로 수집하는 역할 DAO 클래스(Data Access Object) 데이터베이스에 데이터(VO, DTO)를 저장,수정 하거나 검색,삭제를 하기 위해서 만들어지는 모델(클래스) (CRUD 동작을 가지고있는 클래스, 비즈니스 로직을 처리하는 클래스) 이외의 도움을 주는 클래스 반복적으로 사용해야 될 동작(기능)을 별도의 클래스로 만들어 놓고 필요할 때 사용하는 클래스 자바에서도 java.util 패키지에 이러한 Utility 클래스..
[패캠/JAVA] 객체, 클래스 객체 구조에 데이터를 담아가지고 다른곳으로 데이터를 이동하기 쉽게 만들어 놓은것 ex) 책이라는 데이터를 변수에 저장하기 위해서는 책이라는 자료형이 필요하다 책: BookDTO (아래는 메모리에 만들어질 구조이다) 제목 가격 저자 출판사 페이지수 ISBN 클래스 : 객체를 설계하는 도구 = 모델링 하는 도구 -> 자료형 측면에서의 접근: 새로운 자료형을 만드는 도구 -> 객체지향 측면 : 현실세계에 있는 객체를 객체지향 프로그램에서 사용하기 위해 객체의 상태정보(멤버변수)와 행위정보(멤버메서드)를 뽑아서 설계하는 도구 그렇다면 사용은 어떻게 할까? : 모델링 된 객체를 사용하기 위해서는 메모리에 객체를 생성해야한다. = 객체를 메모리에 올려야한다. 변수 선언 -> 객체 생성 -> 객체를 변수에 할당 생성..
[패캠/JAVA] 메서드 메서드: 객체가 가지고 있는 동작, 기능 //메서드 정의 접근제한자 리턴타입 메소드명(인수1, 인수2 ...){ 수행코드; return 반환값; } 리턴타입: 수행된 후에 반환하는 결과의 자료형, 아무 결과 반환 안할시에 void씀 메서드의 결과 값은 하나의 형태로 만들어진다. 변수는 데이터를 하나의 형태로 저장한다. 메서드의 이름이 변수 역할을 한다 위의 코드에서 결국 add(a,b)=sum이 된다 => 메서드의 이름이 변수역할을 한다. 매개변수 전달 기법 Call By Value(값 전달) Call By Reference(번지 전달) 번지를 전달해 줌으로써 addArray메서드에서 배열 a에 접근하여 해당 값을 사용가능하다 메서드 오버로딩 : 하나의 클래스 내에서 동일한 이름의 메서드를 여러개 사용할..
[패캠/JAVA] 반복문 for,while for문 일반적으로 반복하는 횟수가 정해진 경우에 사용 초기식은 처음 한 번만 수행 이후, 조건식 -> 반복할 문장 -> 증감식 이 반복적으로 수행됨 for(초기식;조건식;증감식){ 반복할 문장 } for( 변수:컬렉션 ){ 반복할 문장 } //for each문(향상된 for문) while문 먼저 조건식 검사 반복할 문장을 실행 초기식; while(조건식){ 반복할 문장; 증감식; } //조건식이 거짓이면 탈출 do~while문 반복할 문장을 실행한 후에 조건식 검사 반복문 내에 있는 문장을 최소한 한 번 실행하고자 할때 유용 초기식; do { 반복할 문장; 증감식; } while( 조건식 );