본문 바로가기
728x90

개발/자바 6

쓰레드 (Thread) Thread .. 단순하게는 "흐름"이라고 생각하면 된다. 하지만 어떠한 흐름일까? 예를 들어보자.. 메인 쓰레드 하나로만 게임을 만든다고 하면, 유저 공격이 끝나고 몬스터가 공격을 하는 '턴제 게임'이 된다. 코드가 순차적으로 실행되기 때문이다. 하지만, 요즘 게임은 어떤가? 유저가 공격하는 와중에 몬스터도 유저를 공격한다. 즉, 유저와 몬스터의 움직임이 동시에 진행되는 것이다. 우리가 들어본 멀티쓰레딩이란 여러 객체에 쓰레드를 부여해서 "동시성"을 확보하는 것이다. ** RPG 게임에서 많은 몬스터가 제각기로 움직이는데 이게 다 쓰레드라고 생각하면 된다. 엄청나게 유용해보인다. 하지만! 컨트롤이 쉽지 않다. 가령 1부터 10까지 출력하는 코드를 만들 때, 아래와 같은 코드가 있다고 하자. for(in.. 2020. 5. 22.
인터페이스와 추상클래스 - Interface and Abstract Class 인터페이스란 뭐지 ? 이전에 알아본 클래스는 "상태, 행위"로 구성되어 있다. 추상 클래스는 클래스 이름 앞에 추상을 뜻하는 abstract 가 붙거나 하나 이상의 추상메소드를 가져야한다. 인터페이스는 모든 메소드가 추상메소드이다. 그럼, 추상클래스와 인터페이스가 매우 비슷한데? 맞다. 사용하는 용도도 비슷하다. 하지만, 분명히 다른 점이 있는데 [ 추상 클래스 = 일반변수(가능) + 일반메소드(가능) + 추상메소드 ] [ 인터페이스 = 상수(static) + 추상메소드 ] 위 처럼, 변수를 가질 수 있느냐 없느냐의 차이가 있다. 또 상속을 했을 때 인터페이스에 선언된 메소드는 모두 override를 해줘야한다. 추상클래스의 메소드는 상황에 따라 다름. 게다가, 추상클래스는 extends로 상속하면 자식.. 2020. 5. 22.
클래스 (Class) 이전에 공부했던 내용들을 복습 겸 정리해놓으려고 한다. 정의나 개념 등과 같은 것들은 인터넷에서 쉽게 찾을 수 있으니, 여기선 내가 공부한 내용을 적겠다. 객체지향 프로그래밍 VS 절차지향 프로그래밍 클래스에 대해서 알아보기 이전에, 객체지향과 절차지향에 대해서 먼저 알아보자. - 절차지향 프로그래밍 : 쉽게 말하자면 첫번째 줄부터 끝까지 쭉 내려오면서 코드가 실행되는 것이다. - 객체지향 프로그래밍 : 코드가 위에서부터 내려오면서 실행되는 절차는 동일하나, 객체가 많이 사용된다. 그렇다면 객체(Object)란 무엇인가? 철학적으로 객체란 "실존하는 모든 것" 또는 "인간이 인지하여 구별할 수 있는 것"이라고 한다. 그럼 여기서 잠깐 멈추고 클래스를 알아보자. class라는 단어를 우리는 교실, 계급, .. 2020. 5. 21.
JavaFX *** 이 개념은 "이것이 자바다. 신용권의 Java 프로그래밍 정복" 을 보고 정리한 것입니다. *** JavaFX.. 자바로 GUI 애플리케이션을 만들 때 쓰인다. (우리가 일반적으로 컴퓨터에서 실행시키는 프로그램을 생각하면 된다.) 역사를 짧게 보자면 이전에 AWT(Abstract Window Toolkit) 이라고 하는 자바 라이브러리가 있었는데 당시 상황이 인터넷이 활성화되지 않았기에 운영체제에서 제공하는 네이티브 UI 컴포넌트를 사용했다. 근데 문제는 운영체제마다 각기 다른 컴포넌트를 제공하기에 보여지는게 달라 사용자들의 불편함을 초래했다. 이를 개선해 동일한 UI를 제공하려고 Swing이 나왔다. 근데 시간이 흘러 운영체제의 네이티브 UI 에서 애니메이션과 시각효과를 보여주면서, 사람들은 네.. 2020. 5. 17.
자바 (람다식, Lambda Expression) *** 이 개념은 "이것이 자바다. 신용권의 Java 프로그래밍 정복" 을 보고 정리한 것입니다. *** 람다식(Lambda Expression)이란 ? 역사를 잠깐 보자면... 이전에 함수적 프로그래밍 언어들이 있었는데 학계를 제외하고는 큰 호응을 얻지 못했다고 한다. 그러다가 최근 들어 함수적 프로그래밍이 다시 부각되고 있는데 이유는 병렬 처리와 이벤트 지향 프로그래밍에 적합하기 때문이라고 한다. 그래서 객체 지향 프로그래밍과 함수적 프로그래밍을 혼합해 더욱 효율적인 프로그래밍이 될 수 있도록 개발 언어가 변하고 있다고 한다. 자바는 8부터 람다식을 지원하면서 기존 코드에서 변화가 많이 생겼다. 람다식은 수학자 알론조 처치(Alonzo Church) 가 발표한 람다 계산법에서 사용된 식으로, 이를 제.. 2020. 5. 8.
자바 (제네릭, Generic) *** 이 개념은 "이것이 자바다. 신용권의 Java 프로그래밍 정복" 을 보고 정리한 것입니다. *** 채팅을 구현하려고 TCP, socket 등을 공부하다가 이상한 길로 새어 제네릭(Generic)이란 개념을 보게 되었다. 이전에 개발하면서 계속 써왔던 것인데, 이게 제네릭인줄은 이번에 처음 알았다. 그냥 많이 봤던 걸 예시로 들어주면 Hashmap hashmap = new Hashmap(); 이런 거다. 여기서 어떤게 제네릭이냐면 다이아몬드 연산자 로 표현된 부분이다. 그렇다면 제네릭은 왜 사용하는가 ? 1. 타입 에러를 강하게 체크한다고 함.. 나중에 실행중에 타입 에러가 뜨는걸 막기 위해 컴파일 할때 부터 강하게 타입체크를 함 2. 타입 변환(Casting)을 제거한다고 함.. 비제네릭 코드는 .. 2020. 5. 8.
728x90