Language/Java

    ⭕ 자바 : 상속(Inheritance)과 다형성(polymorphism) 올것이 왔다!

    ⭕ 상속(Inheritance)과 다형성(Polymorphism) 🟣 이전 포스팅 ✔️ 상속에 대한 이전 포스팅을 참고하려면 아래 링크를 클릭해주세요 ⭕ 자바 : 상속(Inheritance)의 등장 🟣 객체지향(OOP)의 핵심 앞에서 객체지향 문법을 준비하기 위한 여러 문법을 배웠는데 이제부터 진정한 객체지향의 길로 접어들 것 같다는 생각이 든다. 알고보면 객체지향은 실생활과 매우 유사하다. 객체지향을 잘 이해한다는 것은 클래스를 어떻게 나눌 수 있냐가 핵심이라고 생각된다. 데이터 중심 클래스 vs 기능 중심 클래스(업무) 중 어떤 것에 중심이냐에 따라 클래스를 따로 짠다. 그리고 데이터를 추상화, 기능을 추상화한다. 실세계 => 데이터로 추상화한다. ✔️ 물리적 : 환자(Patient) , 제품(Pro..

    ⭕ 자바 : 상속(Inheritance)의 등장

    상속(Inheritance)은 왜 등장하게 되었을까? 상속이 등장하게 된 배경과 코드를 살펴보며 상속에 대해 간접 체험해 보는 것이 목적입니다. 먼저 상속이 등장하게 된 배경에 대해 알아볼까요? 1. 기존 코드에 새로운 내용을 추가한다면? 만약 프로그램을 유지보수하는 과정에서 기존 코드에 새로운 내용을 집어넣는다면 어떻게 될까? 여기에는 몇 가지 문제점들이 있는데 이에 대해서 알아보자. 📌 문제점 ✔️ 변경된 사항으로 기존 코드를 사용하는데 영향을 끼친다. 기존에 잘 되던 기능까지 동작이 안되는 문제가 발생한다면? 끔찍하다.. ✔️ 오류가 발생 할 가능성이 높다. ✔️ 코드가 누더기가 되어서 유지보수가 힘들다. 위와 같은 문제점들이 발견되면서 새로운 해결책이 필요해지게 되는데... 2. 기존 코드를 복제..

    ⛱️ 생성자(Constructor) 너는 누구니?

    도데체 생성자(Constructor)는 왜 쓸까? 생성자란 ? 인스턴스를 생성한 후 재대로 쓸 수 있도록 유효한 값으로 초기화 시키는 일을하는 메서드다. 인스턴스가 배열이 필요하다면 배열 주소를 넣어넣고 다른 인스턴스를 사용해야한다면 주소를 받아서 넣는 그런 일을한다. 변수를 쓰기전에 유효한 값으로 초기화를 시켜놔야하는 경우에 쓴다. 인스턴스 필드는 생성자의 첫 부분으로 들어간다. // Object()가 생성자이다 Object obj = new Object();지금까지 new 클래스명()으로만 알고 있었는데 이 부분이 생성자를 나타낸다는 것! 모든 클래스는 1개 이상의 생성자를 가지고 있다. 자바에서는 모든 클래스에 최소 1개 이상의 생성자가 있다. 생략되어 보이지 않을 뿐이다. 기본 생성자와 파라미터가..

    🎉 상수(constant)는 언제 사용하는 것일까?

    상수는 언제 사용할까? 다음 자바 코드는 각각의 멤버의 아이디와 패스워드 멤버의 종류를 나타내는 코드이다. 이를 통해 상수를 왜 사용해야하는지 알아봅시다! 상수로 나타내지 않을 때 문제점? 아래 코드에서 멤버의 종류를 숫자로 나타내면 어떤 불편함이 있을까? 1달뒤 코드를 본다면? 아니 하루 뒤에도 기억 못할 수 있다. (0은뭐지?, 1이뭐야?, 2는 뭐지?) 주석을 적어놓아도 매번 확인하기 귀찮다. 유효한 이름을 지어서 알아보기 쉽게 만들 필요가 있다. public class ConstantEx1 { static class Member { String id; String password; int type; // 0: 손님, 1: 회원, 2: 관리자 } public static void main(Strin..

    💉 의존 객체는 어떻게 사용하면 될까요?

    📌 의존 객체(dependency object)란? 작업을 수행하기 위해 사용하는 객체다. 작업할 때 의존하는 객체라고 해서 의존 객체 라 부른다. 일시적인 의존 관계(dependency) 특정 메서드에서만 사용되는 경우 보통 파라미터나 로컬 변수로 사용한다. 지속적인 의존 관계(association) 여러 메서드에서 사용되는 경우 보통 인스턴스 필드로 사용한다. 📌 의존 객체를 사용하면 좋은 이유? STEP1. 파라미터로 주소를 넘겨주다. 현재상황 App.java (main)에서 ProjectHandler.java를 실행시킬 때 반드시 MemberHandler.java의 exist() 메서드가 필요 add(), update()에서 exist()메서드를 필요로 하기에 파라미터로 주소를 넘겨줌. publi..

    📎 JVM과 가비지 컬렉터(garbage collector)

    가비지 컬렉터(garbage collector) 힙 메모리에 존재하는 가비지를 찾아 제거하는 일을 한다. 다른 용도로 사용할 수 있도록 메모리를 해제하는 일을 한다. [1번] public class GarbageEx1 { public static void main(String[] args) { Score s1 = new Score(); Score s2 = s1; } } [2번] public class GarbageEx2 { public static void main(String[] args) { Score s1; s1 = new Score(); s1 = new Score(); } } [3번] public class GarbageEx3 { public static void main(String[] args..

    🙌 당신의 삶의 질을 높여주는 Eclipse Shortcut

    Eclipse Keyboard Shortcut 실행 Ctrl + F11 : 바로 전에 실행했던 클래스 실행 소스 네비게이션 Ctrl + 마우스커서(혹은 F3) : 클래스나 메소드 혹은 멤버를 상세하게 검색하고자 할때 Alt + Left, Alt + Right : 이후, 이전 Ctrl + O : 해당 소스의 메소드 리스트를 확인하려 할때 F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다. Alt + ) : 이전(다음) 작업 화면 문자열 찾기 Ctrl + K : 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다. Ctrl + Shift + K : 역으로 찾고자 하는 문자열을 찾아감. Ctrl + J : 입력하면서 찾을 수 있음. Ctrl + Shift + J : 입력하면..

    🪁 Calculator를 통해 배우는 Static Method & Instance Method

    Calculator를 통해 배우는 Static Method & Instance Method 목적 다음과 같은 Java 코드를 통해 step by step으로 코드를 보완해보고자 한다. Static Method & Instance Method에 대한 이해를 높이고자 한다. package com.mins.oop.ex00; public class UnderstandMethod { public static void main(String[] args) { // 다음 식을 연산자 우선 순위를 고려하지 않고 순서대로 계산하라! // 2 + 3 - 1 * 7 / 3 = ? int result = 0; // 메서드를 호출하여 작업을 수행하고, // 리턴 결과는 로컬 변수에 저장한다. result = plus(2, 3);..