전체 글
-
Java - 상속과 다형성(super)2개발언어/JAVA 2023. 10. 17. 15:29
상속에서 상위클래스와 하위클래스 그리고 super 예약어 상속에서 클래스 생성과 형 변환 하위 클래스의 인스턴스가 생성될 때는 상위 클래스의 인스턴스 생성자가 먼저 호출된다. 상속 관계에서 인스턴스의 생성 과정을 살펴보면 하위 틀래스가 상위 클래스의 변수과 메서드를 사용할 수 있는 이유와 하위 클래스가 상위클래스의 자료형으로 형 변환 할 수 있는 이유를 이해할 수 있다. 상위 클래스 생성자가 호출될 때 상위 클래스의 멤버 변수의 메모리가 힙 메모리에 생성되는 것이다. 하위 클래스 VIPCustomer가 생성될 때 메모리 구조를 그려보면 위와 같다. 위 그림과 같이 상위 클래스 변수가 메모리에 먼저 생성되기 때문에 하위 클래스에서 이 값들을 모두 사용할 수 있다. 상위 클래스의 변수를 private으로 선..
-
Java - 상속과 다형성(상속)1개발언어/JAVA 2023. 10. 17. 15:29
상속이란? B클래스가 A클래스를 상속받으면 B클래스는 A클래스의 멤버 변수와 메서드를 사용할 수 있다. 객체 지향 프로그램은 유지 보수하기 편하고 프로그램을 수정하거나 새로운 내용을 추가하는 것이 유연한데, 그 기반이 되는 기술이 상속이다. 클래스의 상속 class B extends A { } 자바 문법으로 상속을 구현할 때는 extends 예약어를 사용한다. 이때 사용하는 extends 예약어는 '연장,확장하다'의 의미이다. 즉 A가 가지고 있는 속성이나 기능을 추가로 확장하여 B클래스를 구현한다는 뜻이다. 위 그림과 같은 관계를 생각해 보자 포유류는 사람보다 일반적인 개념이다. 즉 사람은 포유류의 특징과 기능을 기본으로 더 많거나 다른 특징을 가지고 있다. 이렇게 상속 관계에서 상위 클래스가 하위 클..
-
Java - Object4개발언어/JAVA 2023. 10. 17. 11:19
static 변수 여러 클래스에서 공통으로 사용하는 변수를 'static 변수'로 선언한다. static 변수의 정의와 사용방법 static 변수란 다른 용어로 '정적 변수'라고 한다. static 변수는 자바뿐만 아니라 언어에서도 비슷한 개념으로 사용하고 있는 변수로서 자바에서는 다른 멤버 변수처럼 클래스 내부에 선언한다. 변수를 선언할 때 다음과 같이 자료형 앞에 static 예약어를 사용한다. static 변수는 클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴트가 생성될 때마다 새로 생성되는 변수가 아니다. static 변수는 프로그램이 실행되어 메모리에 올라갔을때 딱 한 번 메모리 공간이 할당된다. 그리고 그 값은 모든 인스턴스가 공유한다. 다시 설명하면 일반 멤버 변수는 인스턴스가 생성될 ..
-
Java - Object3개발언어/JAVA 2023. 10. 16. 17:45
💡tip) 접근제어자 접근 제어자 설명 public 외부 클래스 어디에서나 접근할 수 있다. protected 같은 패키지 내부와 상속 관계의 클래스에서만 접근할 수 있고 그 외 클래스에서는 접근할 수 없다. 아무것도 없는 경우 default이며 같은 패키지 내부에서만 접근할 수 있다. private 같은 클래스 내부에서만 접근할 수 있다. this 예약어 자신의 메모리를 가리키는 this this는 간단히 설명하면 생성된 인스턴스 스스로를 가리키는 예약어이다. package studythis; class BirthDay{ int day; int month; int year; // 태어난 연도를 지정하는 메서드 public void setYear(int year){ // mian()의 bDay.year=..
-
Java - Object 1개발언어/JAVA 2023. 10. 16. 13:18
Java Type public class Student{ int studentID; //학번 String studentName; //학생 이름 int grade; //학년 String address; //사는 곳 } public class Person{ String name; //이름 int height; //키 double weight; //몸무게 char gender; //성별 boolean married; //결혼여부 } 참조 자료형으로 사용하는 클래스는 String,Dtate와 같은 이미 JDK에서 제공하는 것일 수도 있고, 개발자가 직접만든 Student나 Person같은 클래스가 변수의 자료형이 될 수도 있다. 패키지 패키지는 간단하게 말하면 클래스 파일의 묶음이다. 패키지를 만들면 프로젝트 ..
-
Java - 메서드 호출 시 파라미터를 전달하는 방법(Call By Value, Call By Reference)개발언어/JAVA 2023. 10. 10. 18:12
Java에서 메서드 호출시 파라미터를 전달하는 방법 메서드를 호출할 때 파라미터를 전달하는 방법에는 두 가지가 있다. 하지만 자바는 오로지 Call By Value로 만 작동한다. 1. JVM 메모리에 변수가 저장되는 위치 Java의 call by value에 대해 이해하기 위해서는 먼저 변수 생성 시 메모리에 어떤 식으로 저장되는지 알아야한다. Java에서 변수를 선언하면 Stack 영역에 할당된다. 원시 타입(Primitive Type)은 Stack 영역에 변수와 함께 저장된다. 참조 타입(Reference Type)객체는 Heap 영역에 저장되고 Stack영역에 이쓴 변수가 객체의 주소값을 갖고 있다. 2.원시 타입(Primitive Type)전달 public class PrimitiveTypeTe..
-
도메인 주도 개발3 - 도메인 모델 도출Web 개발/도메인 주도 개발 2023. 10. 10. 15:05
도메인 모델 도출 도메인에 대한 이해 없이 코딩을 시작할 수 없다. 기획서, 유스케이스(Use Case),사용자 스토리와 같은 요구 사항과 관련자와의 대화를 통해 도메인을 이해하고 이를 바탕으로 도메인 초안을 만들어야 비로소 코드를 작성할 수 있다. 화이트보드, 종이와 연필, 모델링 툴 중 무엇을 선택하든 구현을 시작하려면 도메인에 대한 초기 모델이 필요하다. 요구사항 정리 도메인을 모델링할 때 기본이 되는 작업은 모델을 구성하는 1)핵심 구성요소, 2)규칙, 3)기능을 찾는 것이다. 이 과정은 요구사항에서 출발한다. 예시로 주문 도메인과 관련된 몇 가지 요구사항을 알아보자. 최소 한 종류 이상의 상품을 주문해야 한다. 한 상품을 한 개 이상 주문할 수 있다. 각 상품의 구매 가격 합은 상품 가격에 구..
-
도메인 주도 개발2 - 도메인 모델 패턴Web 개발/도메인 주도 개발 2023. 10. 10. 11:39
도메인 모델 패턴 표 1.1 아키텍쳐 구성 영역 설명 사용자 인터페이스(UI) 표현(Presentation) 사용자의 요청을 처리하고 사용자에게 정보를 보여준다.여기서는 사용자는 소프트웨어를 사용하는 사람뿐만 아니라 외부 시스템일 수도 있다. 응용(Application) 사용자가 요청한 기능을 실행한다. 업무 로직을 직접 구현하지 않으며 도메인 계층을 조합해서 기능을 실행한다. 도메인 시스템이 제공할 도메인 규칙을 구현한다. 인프라스트럭처(Infrastructure) 데이터베이스나 메시징 시스템과 같은 외부 시스템과의 연동을 처리한다. 일반적인 애플리케이션의 아키텍쳐는 [그림 1.5]와 같이 네 개의 영역으로 구성된다. 각 영역의 역할은 [표 1.1]과 같다. 앞서 살펴본 도메인 모델이 도메인 자체를 이..