Java ☕/Java

Java ☕/Java

[Java] 인터페이스 분리 원칙 (Interface Segregation Principle, ISP)

안녕하세요. 성조입니다. SOLID의 4 번째 원칙. ISP에 대해 정리해 보려 합니다. 혹여나 올바르지 못한 지식 전달이 있는 경우 언제든지 피드백 댓글 남겨주시면 감사드리겠습니다. 인터페이스 분리 원칙(Interface Segregation Principle, ISP)이란? 인터페이스 분리 원칙은 '클라이언트가 사용하지 않을 불편한 메서드를 강제적으로 구현하게 해서는 안 되는 것이다.'이다. 즉, 클라이언트는 사용하지 않는 메서드에 의존하지 않아야 한다는 얘기이다. 조금 더 설명하면 A, B, C라는 메뉴가 있다. 고객은 A 음식만 원하는데 A를 먹기 위해서는 B와 C를 반드시 먹어야 하는 것이다. 이런 경우 인터페이스 분리 원칙이 적용되지 않았다고 얘기할 수 있다. 메뉴판에 있는 A, B, C에서 ..

Java ☕/Java

[Java] 리스코프 치환 원칙(Liskov Substitution Principle, LSP)

안녕하세요. 성조입니다. 이번 포스팅은 'SOLID'에서 L을 맡고 있는 리스코프 치환 원칙에 대해서 정리해 보려 합니다. SOLID를 공부하면서 5개 개념 중. L은 이해하는 데 가장 오래 걸렸던 파트라고 생각합니다. 혹여나 올바르지 못한 정보를 전달하고 있다면 언제든지 댓글 남겨주시면 감사드리겠습니다! 리스코프 치환 원칙(Liskov Substitution Principle, LSP) 리스코프 치환 원칙은(LSP) 상위 클래스의 인스턴스를 하위 클래스의 인스턴스가 파생(치환) 되어도 반드시 기본 타입 부분에서 완벽하게 대체하여 정확성을 유지해야 한다는 원칙이다. 즉, 상위(부모) 클래스의 객체와 하위(자식) 클래스는 같은 방식으로 동작되어야 한다는 의미이다. (오버라이딩) LSP를 준수하는 과정에서 ..

Java ☕/Java

[Java] 자바 SE, EE 정리 (with ME, FX 맛보기 정리)

안녕하세요. 성조입니다. 이번에 자바와 조금 더 친해지기 위해서 버전 종류를 정리하는 포스팅을 진행해 보려 합니다. 혹여나 올바르지 못한 지식 전달 사항이 있다면 언제든지 댓글 남겨주시면 감사드리겠습니다! Java SE(Standard Edition)이란? Java SE는 영어 그대로 자바의 [기준, 기본]이 되는 플랫폼을 말한다. 자바의 핵심 기능들을 가지고 있으며, Java SE는 객체지향 프로그래밍 언어로 기본적인 기능들을 사용해 프로그래밍할 수 있도록 도와주는 역할을 한다. SE는 기본적인 API와 JVM을 제공하며, 기본 자바 프로그래밍(APIs), 객체 지향 언어(캡슐화, 다형성, 상속, 추상화), 기본 입출력(I/O)과 네트워킹, Multi-threading, JDBC, GUI, 보안, et..

Java ☕/Java

[Java] 개방-폐쇄 원칙 (Open-Closed Principle , OCP)

안녕하세요. 성조입니다. 이전에 작성한 SRP 포스팅에 이어서 SOLID 원칙의 두 번째 원칙. OCP에 대해서 정리해보려 합니다. 혹여나 올바르지 못한 지식 전달이 있는 경우 언제든지 피드백 댓글 남겨주시면 감사드리겠습니다. 개방-폐쇄 원칙(Open-Closed Principle, OCP)이란? 개방-폐쇄 원칙은 객체 지향 설계 원칙 중 하나로, "소프트워에 개체(클래스, 모듈, 함수 등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다."는 것을 말한다. (객체 지향 원칙에서 유명한 말이므로 공부하다 보면 들어봤을 수도 있다.) 즉, 기존 코드의 변경 없이. 새로운 기능을 추가할 수 있도록 설계하는 것을 의미한다. [개방-폐쇄 원칙(OCP)이 적용되지 않은 예시] public cl..

Java ☕/Java

[Java] 접근 지정자(Access Modifier) Private/Protected/Default/Public 정리

안녕하세요. 성조입니다. 이번 포스팅은 학부에서 한참 자바 배울 때 온갖 이해 안 가는 것 중. 유일하게 비교적 쉽게 이해됐던 개념입니다. 혹여나 올바르지 못한 지식 전달이 있다면 언제든지 댓글 남겨주시면 감사드리겠습니다! 접근 지정자(Access Modifier)란? 자바에서 클래스, 변수, 메서드, 생성자에 대한 접근을 제한하거나, 제어하기 위해서 사용하는 키워드이다. 클래스 또는 객체의 상태와 동작과 같은 값을 보호하는 데 사용된다. 자바는 객체 지향 언어이므로, 객체 지향 프로그래밍을 해야 한다. 접근 지정자의 경우. 중요한 원칙인 캡슐화(Encapsulation)와 데이터 은닉화(Data Hiding)를 지키기 위한 수단으로 사용된다. ● 캡슐화(Encapsulation) 캡슐화란? A라는 데이..

Java ☕/Java

[Java] 단일 책임 원칙(Single Responsibility Principle, SRP)

안녕하세요. 성조입니다. 오늘은 객체지향 설계 5대 원칙인 SOILD에 대해서 정리해 보려 합니다. 또한, 원칙 중 S인 SRP에 대해서 포스팅해 보려 합니다. 자바 코드를 활용해서 SRP를 설명하는 것이므로 Java 카테고리에 들어오게 됐습니다. 올바르지 못한 지식 전달이 있다면 언제든지 댓글 남겨주시면 감사드리겠습니다! 단일 책임 원칙(Single Responsibility Principle, SRP)이란? 클래스가 단 하나의 책임을 가져야 한다는 의미를 갖는다. 조금 더 풀어서 얘기하면 클래스를 변경해야 하는 이유가 발생하게 되면. 변경 이유는 하나만 있어야 한다. 즉, 클래스는 하나의 기능만을 관리하고, 그것에만 집중해야 한다는 의미이다. 만약 'A'라는 클래스가 B와 C라는 기능에 책임을 가지고..

Java ☕/Java

[Java] 박싱(Boxing)과 언박싱(Unboxing)

안녕하세요. 성조입니다. 이번 포스팅에서는 자바 언어의 박싱과 언박싱에 대해서 정리해 보려 합니다. 혹여나 잘못된 지식 전달이 있다면 언제든지 댓글로 얘기해 주시면 감사드리겠습니다. 박싱(Boxing) 박싱은 원시 타입의 값을 해당하는 래퍼 클래스(Wrapper class)의 객체로 변환하는 것을 말한다. 각각의 원시 타입에는 해당하는 래퍼 클래스가 있어서 그 원시 타입의 값을 객체로 다룰 때 사용하는 것이 박싱이다. 'int' 타입의 래퍼 클래스는 'Integer'이며, 'double' 타입의 래퍼 클래스는 'Double'이다. 박싱은 직접 래퍼 클래스의 생성자를 호출하여 수행할 수 있지만 자바 5 버전 이후로 자동 박싱(Autoboxing)이라는 기능을 통해 이 과정을 자동으로 처리할 수 있게 됐다...

Java ☕/Java

[Java] Call by Value와 Call by Reference 정리. (값 호출과 참조 호출.)

안녕하세요. 성조입니다. 이번 포스팅은 전공 변경 이후에 처음 봤던 개념이며, 정의했던 내용이었는데 파이썬 기준으로는 정의를 해본 경험이 있지만 자바 언어를 기준으로 정리해 보지 않았던 것 같아서 시간 내서 정리해 봅니다. 잘못된 지식 전달 사항이 있다면 언제든지 댓글로 피드백 주시면 감사드리겠습니다. 결론 - Java는 기본적으로 Call by Value 방식을 사용한다. 그러나 객체 전달할 때는 참조가 전달되기 때문에 원본 객체의 내용을 변경하는 것이 가능한 것이다. - Java는 포인터와 같은 직접적인 메모리 접근 방식이 없어서 C/C++ 에서와 같은 참조에 의한 호출은 정확하게 구현할 수 없다. [정리] 비교 Call by Value (값에 의한 참조) Call by Reference (주소에 의..

SeongJo
'Java ☕/Java' 카테고리의 글 목록