전체 글 (44) 썸네일형 리스트형 [패캠/JAVA] 상속 관계 객체 생성 및 초기화(동작 정보, 메서드) 앞서서 상태정보 즉, DTO,VO 클래스에서의 상속 관계를 살펴보았는데 이번엔 동작정보 즉 메서드에 초점을 맞춰서 상속 관계를 살펴 보려고 한다. 또한 앞에서 빠진 내용들을 덧붙이려고 한다. 상속의 처음부터 다시 살펴보자(메서드를 중심으로) 수평적 구조를 사용하여 Dog, Cat 클래스를 만들어 보자 두 클래스에는 공통적으로 eat() 이라는 메서드가 존재한다. 반복되는 요소를 줄이는것이 좋다. Upcasting이란? : 부모가 자식을 가리키는 객체생성방법 super() : 상위 클래스의 생성자를 호출하는 메서드, 생성자 메서드에서 가장 첫 문장에 사용해야 한다. 상위 클래스의 기본생성자를 호출하는 super() 는 생략되어 있다. 이와 같이 수행문을 super() 보다 먼저 적어버리게 된다면 오류가 난.. [패캠/JAVA] 상속 관계 객체 생성 및 초기화(상태정보) 앞선 글에서 살펴 본것 처럼 상속을 쓰게 되면서 '자식이 부모의 상태정보를 마음대로 접근하는건 정보은닉에 위배되는거 아닌가?' 라는 의문점이 생겼었다 이에 대한 문제점의 예시를 살펴보자 다음과 같은 생성자를 만들어 놓고 이와 같이 초기화를 시킨다면 아무 제약 조건이 없어서 나이가 말도 안되는 숫자인 500이 들어가 있어도 값이 저장이 되고출력이 된다. 초기화는 해당하는 객체 자신이 하는 것이 바람직하다 -> 그래서 직접 접근 할 수 없도록 부모에 있는 상태 변수의 접근권한 protected를 private로 바꾸고 부모에게 데이터를 넘겨서 부모가 부모의 생성자에서 정보를 초기화 하도록 한다 아래는 위에서 말한 해결방법으로 해결해 본 모습이다 [패캠/JAVA] 자바 상속 상속이란? 부모가 자식들에게 자신의 것을 사용하라고 허락해주는 것 (앞서 VO 클래스를 바구니라고 표현 했었는데 그 바구니를 자식이 각각 만드는 것이 아닌 부모에게 바구니가 있다면 자식이 부모의 바구니를 사용할 수 있게 해주는 것이다.) 수평적 구조 설계 객체를 설계하다 보면 비슷한 클래스의 경우 중복적인 요소가 발생한다. 단점 ① 코드의 중복이 발생 ② 새로운 요구사항 발생시 반영이 어렵다(유지보수가 어렵다.) ③ 확장성이 떨어진다.(비용 및 시간이 많이 든다) 수직적 구조 설계 수직적 구조는 계층화=상속 이라고 할 수 있다 상속을 사용하면 하위클래스가 상위클래스를 재활용 가능하다. 즉, 하위클래스가 상위클래스를 접근하여 사용 가능 장점 ① 코드의 중복을 최소화 ② 새로운 요구사항 발생시 반영이 쉽다(.. [React] CRA 프로젝트 초기 설정 리액트 Create-React-App 프로젝트 초기 설정하면 좋을것들에 대하여 정리해 보았다 CRA 설치하기 //npx create-react-app 프로젝트명 npx create-react-app projectname CRA를 설치하고 나면 많은 폴더들과 파일들이 생긴다 이중에서 필요없는 파일들과 내용을 제거 하려고 한다! Public Src favicon.ico App.css index.html App.js logo192.png App.test.js logo512png index.css manifest.json index.js robots.txt logo.svg reportWebVitals.js setupTests.js 위의 표와 같이 필요없는 파일을 삭제한다 그리고 해당 파일이 import되어 있는.. [패캠/JAVA] JVM 메모리 모델 JVM Memory model(Runtime Data Area) 1. Method Area 메서드의 바이트코드(기계어 코드) 가 할당되는 공간 static-zone과 none-static-zone으로 나누어진다. static멤버들은 static-zone에 할당된다 2. Heap Area Generation 객체가 생성되는 메모리 공간(new연산자) GC(garbage collector)에 의해서 메모리가 수집된다 -> 주기적으로 garbage=사용이 끝난 객체 를 없엔다. -> generation count가 높은것 부터 garbage 수집 될 가능성이 높다 3. Stack Area (Call Stack Frame Area)/PC register Native Method Area 메서드가 호출 되면 메서.. [패캠/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).. 이전 1 2 3 4 5 6 다음