Backend/Java11 [김영한 실전 자바 - 기본편] 상속 상속 관계가 필요한 이유 ElectricCarpackage class10;public class ElectricCar { public void move(){ System.out.println("차를 이동합니다."); } public void charge() { System.out.println("충전합니다."); }} GasCarpackage class10;public class GasCar { public void move() { System.out.println("차를 이동합니다."); } public void fillUp(){ System.out.println("기름을 주유합니다."); .. 2024. 5. 30. [김영한 실전 자바 - 기본편] 패키지 2024/05/18패키지 - 시작쇼핑몰 시스템을 개발한다고 가정, 프로그램이 매우 작고 단순해서 클래스가 몇개 없다면 크게 고민할 거리가 없겠지만, 기능이 점점 추가되어서 프로그램이 아주 커지게 된다면 어떻게 될까? 아주 작은 프로그램OrderUserProduct 큰 프로그램UserUserManagerUserHistoryProduct ProductCatalog ProductImageOrder OrderService OrderHistory ShoppingCartCartItemPayment PaymentHistoryShipment ShipmentTracker 매우 많은 클래스가 등장하면서 관련 있는 기능들을 분류하고 관리하고 싶다는 생각이 든다. 컴퓨터는 보통 파일을 분류하기 위해 폴더, 디렉토리라는 개념을.. 2024. 5. 18. [김영한 실전 자바 - 기본편] 생성자 2024/05/17생성자 - 필요한 이유객체를 생성하는 시점에 어떤 작업을 하고 싶은 경우 생성자(Constructor)를 이용한다.왜 생성자가 필요한지 코드로 알아보자.! package class4;public class MemberInit { String name; int age; int grade;} package class4;public class MethodInitMain1 { public static void main(String[] args) { MemberInit member1 = new MemberInit(); member1.name = "user1"; member1.age = 15; member1.grade = 90.. 2024. 5. 18. [김영한 실전 자바 - 기본편] 생성자 2024/05/17생성자 - 필요한 이유객체를 생성하는 시점에 어떤 작업을 하고 싶은 경우 생성자(Constructor)를 이용한다.왜 생성자가 필요한지 코드로 알아보자.! package class4;public class MemberInit { String name; int age; int grade;} package class4;public class MethodInitMain1 { public static void main(String[] args) { MemberInit member1 = new MemberInit(); member1.name = "user1"; member1.age = 15; member1.grade = 90.. 2024. 5. 17. [김영한 실전 자바 - 기본편] 클래스와 데이터 2024/05/09클래스가 필요한 이유Java는 클래스와 객체로 이루어져 있다. 클래스와 객체는 너무 많은 내용을 포함하고 있어서 이해하기 쉽지 않다.클래스와 객체라는 개념이 왜 필요한지 부터 시작해서, 클래스가 어떤 방식으로 발전하면서 만들어졌는지 점진적으로 알아보자. 문제: 학생 정보 출력 프로그램 만들기두 명의 학생 정보를 출력하는 프로그램을 작성해야 한다. 각 학생은 이름, 나이, 성적을 가진다,. 요구 사항(1) 첫 번째 학생의 이름은 "학생1", 나이는 15, 성적은 90이다.(2) 두 번째 학생의 이름은 "학생2", 나이는 16, 성적은 80이다.(3) 각 학생의 정보를 다음과 같은 형식으로 출력해야 한다. "이름: [이름] 나이: [나이] 성적: [성적]"(4) 변수를 사용해서 학생 정보를.. 2024. 5. 9. [Effective Java] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 맞춤법 검사기는 사전(dictionary)에 의존하는데, 이런 클래스를 정적 유틸리티 클래스로 구현한 모습을 드물지 않게 볼 수 있다. 정적 유틸리티를 잘못 사용한 예 - 유연하지 않고 테스트하기 어렵다.public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker() {} // 객체 생성 방지 public static boolean isValid(String word){ ... } public static List suggestions(String typo) { ... }} 싱글턴을 잘못 사용한 예 - 유연하지 않고 테스트하기 어렵다.public class Spel.. 2024. 4. 26. [Effective Java] 인스턴스화를 막으려거든 private 생성자를 사용하라 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어준다.매개변수를 받지 않는 public 생성자가 만들어지며, 사용자는 이 생성자가 자동 생성된 것인지 구분할 수 없다. 실제로 공개된 API들에서도 의도치 않게 인스턴스화할 수 있게 된 클래스가 종종 목격되곤 한다. 추상 클래스로 만드는 것으로는 인스턴스화를 막을 수 없다.하위 클래스를 만들어 인스턴스화하면 그만이다..! 인스턴스화를 막는 방법은 아주 간단하다.컴파일러가 기본 생성자를 만드는 경우는 오직 명시된 생성자가 없을 때뿐이므로 private 생성자를 추가하면 클래스의 인스턴스화를 막을 수 있다.public class UtilityClass { // 기본 생성자가 만들어지는 것을 막는다(인스턴스 방지용). private Util.. 2024. 4. 26. [Java의 정석] - 컬렉션 프레임웍(Collection Framework) 2024/04/25컬렉션 프레임웍(Collection Framework)데이터 군을 저장하는 클래스들을 표준화한 실체를 뜻한다.컬렉션은 다수의 데이터, 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다. 컬렉션 프레임웍의 핵심 인터페이스 컬렉션 프레임웍에서는 컬렉션데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고 각 컬렉션을 다루는데 필요한 기능을 가진 3개의 인터페이스를 정의했다. 인터페이스 List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가로 정의하였다.Map인터페이스는 List, Set관는 전혀 다른 형태로 컬렉션을 다루기 때문에 같은 상속계층도에 포함되지 못했다. Interface특징List순서가 있는 데이터의 집합, 데이터의 중복을 허.. 2024. 4. 25. [Java의 정석] - 애노테이션(Annotation) 2024/04/25(목)애너테이션이란? 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이 애너테이션이다.애너테이션은 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서도 다른 프로그램에게 유용한 정보를 제공할 수 있다는 장점이 있다.애너테이션(annotation)의 뜻은 주석, 주해, 메모이다. ex)자신이 작성한 소스코드 중에서 특정 메서드만 테스트하기를 원한다면, 다음과 같이 @Test라는 애너테이션을 메서드 앞에 붙인다.@Test는 이 메서드를 테스트해야 한다는 것을 테스트 프로그램에게 알리는 역할을 할 뿐, 메서드가 포함된 프로그램 자체에는 아무런 영향을 미치지 않는다. 주석처럼 존재하지 않는 것이나 다름없다.@Test // 이 메서드가 테스트 대상임을 테스트.. 2024. 4. 25. 이전 1 2 다음