CS/JAVA 5

JAVA_중첩/내부클래스

Java에서는 클래스 내 클래스를 선언할 수 있게 지원한다. 그 종류와 사용이유에 관해 기록해보고자 한다.정적 중첩 클래스 : 정적 변수와 같이 앞에 static이 붙어있음내부 클래스 종류 : 인스턴스 변수와 같이 앞에 static이 붙어있지 않다.- 내부클래스- 지역 클래스- 익명 클래스정적 중첩 클래스는 바깥 클래스 안에 있지만 바깥 클래스와 관계없는 전혀 다른 클래스를 말한다.내부 클래스는 바깥클래스의 내부에 있으면서 바깥 클래스를 구성하는 요소를 말한다.즉, 바깥클래스의 인스턴스에 소속이 되는지 여부이며 내부클래스는 인스턴스에 소속된다. 코드로 한번 알아보겠다.public class NestedOuter { //정적변수 private static int outClassValue = 3;..

CS/JAVA 2025.03.10

김영한의 실전 자바 기본 - 다형성 및 문제풀이

자바 객체지향의 중요한 개념중 하나인 다형성의 개념과 문제풀이에 관해 작성해보고자 한다. 다형성인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다.클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있다운전자가 자동차의 역할 즉 인터페이스에 의존하면 자동차의 구현(모델)이 변경되어도 운전하는데 아무런 지장이 없다.반대로 자동차의 구현에 의존하게 되면 내부로직들을 전부 알고 있어야한다. 즉 인터페이스에 의존하여 OCP(개방폐쇄원칙)을 준수하며 확장엔 능하고 변경에는 최소화 해야한다. 결제시스템 문제풀이 요구사항OCP 원칙 준수메서드를 포함한 모든 코드 변경 가능, 클래스나 인터페이스 추가가능단 프로그램을 실행하는 PayMain0 코드는 변경하지 않고, 그대로 유지리펙토링..

CS/JAVA 2025.02.04

객체지향의 사실과 오해 - 이상한 나라의 객체(2) - 1

저자는 객체지향의 관한 내용을 흔히 알고있는 '이상한 나라의 엘리스' 에 빗대어 표현하였다. 간략히 기록하고자 한다. 객체지향의 패러다임은 지식을 추상화하고 그 지식을 객체안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리한다. 이상한 나라의 객체 객체들간의 협력을 설명하기전에 간략하게 '이상한 나라의 엘리스' 이야기를 언급해보겠다. 엘리스는 커튼 뒤 작은 문을 발견했고, 문 뒤에는 아름다운 정원이 펼쳐져 있었다. 하지만 문의 높이가 40cm 채 되지않아 정원에 들어갈수 없었지만, 신체를 조절 할 수 있는 방법[음료를 마시거나 부채질을 하거나 버섯을 먹거나 등등]들을 발견했다. 엘리스의 이야기를 가지고 객체지향과 접목시켜보겠다. 엘리스는 아름다운 정원으로 향하기 위해 키를 변화시켰다. 키를 변화시킨 ..

CS/JAVA 2023.12.18

객체지향의 사실과 오해 - 협력하는 객체들의 공동체(1)

Java를 사용하면서 '객체지향' 이란 단어를 많이 접했지만, 두루뭉술할뿐 명확하게 정의내리지 못하였다. 이 책을 통해 '객체지향' 에 한걸음 다가가 온전히 이해하고, 코드로 표현했으면 하는 바람이다. 객체지향 객체지향, 현실속에 존재하는 사물을 최대한 유사하게 모방해 소프트웨어 내부로 옮겨오는 작업이며 객체들이 서로 협력하는 과정속에서 메시지를 주고받고 공통의 목표를 달성해나간다. 이해를 위해 커피 주문하는 과정을 들여다 보자 협력하는 사람들 카페에는 커피를 주문하는 손님, 주문을 받는 캐셔, 커피를 제조하는 바리스타가 있다. 커피를 주문하고 제조하는 과정에서 역할, 책임, 협력이 생긴다. 손님은 커피를 주문하고, 캐셔는 주문을 받고, 바리스타는 커피를 제조하는 역할을 부여받으며 자신이 맡은 바 책임을..

CS/JAVA 2023.12.13

JAVA - 메모리구조

JVM JAVA 프로그램은 JVM(가상머신)에 의해서 실행되는데, 이때 운영체제로부터 필요한 메모리를 할당받는다. .Java 코드를 컴파일하여 .class 코드로 만든 후 가상머신 환경에서 실행된다. JVM은 JRE 에 포함되어있다. 메모리구조 메소드영역 - 자바 클래스에 대한 정보와 클래스 변수가 저장되는 영역 특정 클래스가 실행되면 이 정보를 읽어들여 메소드 영역에 저장한다. 힙영역 - 인스턴스 변수들이 저장되는 영역 new 연산자를 사용해서 생성한 객체에 대한 정보가 저장된다. 스택영역 - 메소드가 호출될 때 스텍프레임의 정보가 저장되는 영역 메소드와 관련있는 매개변수, 지역변수등이 저장된다. 호출이 완료되면 소멸된다. *스택프레임 : 스택에 저장되는 메소드의 호출정보

CS/JAVA 2023.06.26