전체 글
누구나 할 수 있는 코딩. 흔하디 흔한 개발자로서 성공하고 싶은 학부생입니다.

-
컴포넌트(Component) 란? 컴포넌트는 GUI에서 버튼, 텍스트 상자, 레이블 등의 요소들을 뜻하는 단어입니다. GUI를 구성하는 것이라면 모두 포함되기 때문에 JFrame도 컴포넌트 중에 하나입니다. 다만 JFrame처럼 다른 컴포넌트를 포함할 수 있는 컴포넌트는 컨테이너라고 불리며 그렇지 못하는 컴포넌트를 순수 컴포넌트라고 합니다. 컴포넌트 상속 관계 AWT와 Swing의 모든 GUI 컴포넌트들은 반드시 Component 클래스를 상속받습니다. 아래 표에서 JComponent 클래스를 상속받는 Swing 컴포넌트의 일부 종류와 관계를 알아볼 수 있습니다. 눈여겨 보시면 이 다이어그램에서 대표적인 컴포넌트인 JFrame은 보이지 않는데요, 그 이유는 JFrame, JApplet, JDialog는 ..
[JAVA] Swing GUI 기초(2) - 컴포넌트컴포넌트(Component) 란? 컴포넌트는 GUI에서 버튼, 텍스트 상자, 레이블 등의 요소들을 뜻하는 단어입니다. GUI를 구성하는 것이라면 모두 포함되기 때문에 JFrame도 컴포넌트 중에 하나입니다. 다만 JFrame처럼 다른 컴포넌트를 포함할 수 있는 컴포넌트는 컨테이너라고 불리며 그렇지 못하는 컴포넌트를 순수 컴포넌트라고 합니다. 컴포넌트 상속 관계 AWT와 Swing의 모든 GUI 컴포넌트들은 반드시 Component 클래스를 상속받습니다. 아래 표에서 JComponent 클래스를 상속받는 Swing 컴포넌트의 일부 종류와 관계를 알아볼 수 있습니다. 눈여겨 보시면 이 다이어그램에서 대표적인 컴포넌트인 JFrame은 보이지 않는데요, 그 이유는 JFrame, JApplet, JDialog는 ..
2023.11.28 -
스트림(Stream) 이란? 스트림이란 영어로는 '흐름'을 뜻하는 단어로서 프로그램의 입력과 출력을 바이트(byte)들의 흐름으로 생각하는 것입니다. C언어에서는 FILE이라는 구조체의 포인터인 FILE* 로 스트림을 구현하고 있습니다. 표준 입출력 스트림으로는 (Standard의 줄임말인 std를 붙인) stdin, stdout, stderr 가 있습니다. stdin은 키보드의 입력, stdout과 stderr는 모니터로의 출력을 지원합니다. stdio 헤더 파일로 터미널에서 표준 입출력을 많이 사용해 보셨을텐데요, 이제부터는 표준 입출력을 벗어나 이진 파일(Binary File)에 접근하여 입출력을 해볼 것 입니다. 파일(File) 이란? C에서 파일의 정의는 바이트들의 집합입니다. 무슨 파일이던 컴..
[C] 파일 입출력 기초 (1) - 스트림과 파일의 개념스트림(Stream) 이란? 스트림이란 영어로는 '흐름'을 뜻하는 단어로서 프로그램의 입력과 출력을 바이트(byte)들의 흐름으로 생각하는 것입니다. C언어에서는 FILE이라는 구조체의 포인터인 FILE* 로 스트림을 구현하고 있습니다. 표준 입출력 스트림으로는 (Standard의 줄임말인 std를 붙인) stdin, stdout, stderr 가 있습니다. stdin은 키보드의 입력, stdout과 stderr는 모니터로의 출력을 지원합니다. stdio 헤더 파일로 터미널에서 표준 입출력을 많이 사용해 보셨을텐데요, 이제부터는 표준 입출력을 벗어나 이진 파일(Binary File)에 접근하여 입출력을 해볼 것 입니다. 파일(File) 이란? C에서 파일의 정의는 바이트들의 집합입니다. 무슨 파일이던 컴..
2023.11.27 -
Swing 이란? Swing은 자바에서 GUI 응용 프로그램을 쉽게 제작에 도움을 주기 위해 순수 자바 언어로 제작된 GUI 컴포넌트를 제공하는 패키지입니다. AWT(Abstract Windowing Toolkit)라는 기본적인 자바 GUI 패키지의 클래스들을 상속받는 클래스들로 구성되어 있습니다.(AWT의 고급 버전인 셈이죠!) 이때 이 GUI 클래스를 컴포넌트라고 따로 부르는데요, Swing과 AWT는 기본적인 버튼, 텍스트 입력창 뿐만 아니라 스크롤을 지원하는 사진창, 파일 경로들을 보여주는 트리 등 다양한 컴포넌트를 지원합니다. 그럼 로그 창을 벗어나 새로운 응용 프로그램으로 넘어가보도록 하겠습니다! 더보기 AWT와 Swing, 이 둘의 차이점은 바로 운영체제 의존성입니다. AWT는 운영체제의 도..
[JAVA] Swing GUI 기초(1) - JFrameSwing 이란? Swing은 자바에서 GUI 응용 프로그램을 쉽게 제작에 도움을 주기 위해 순수 자바 언어로 제작된 GUI 컴포넌트를 제공하는 패키지입니다. AWT(Abstract Windowing Toolkit)라는 기본적인 자바 GUI 패키지의 클래스들을 상속받는 클래스들로 구성되어 있습니다.(AWT의 고급 버전인 셈이죠!) 이때 이 GUI 클래스를 컴포넌트라고 따로 부르는데요, Swing과 AWT는 기본적인 버튼, 텍스트 입력창 뿐만 아니라 스크롤을 지원하는 사진창, 파일 경로들을 보여주는 트리 등 다양한 컴포넌트를 지원합니다. 그럼 로그 창을 벗어나 새로운 응용 프로그램으로 넘어가보도록 하겠습니다! 더보기 AWT와 Swing, 이 둘의 차이점은 바로 운영체제 의존성입니다. AWT는 운영체제의 도..
2023.11.23 -
GCC 컴파일러 Visual Studio Code(이하 VSCode)는 자체적인 C 컴파일러를 가지고 있지 않습니다. 따라서 디버깅할 때 GCC 컴파일러를 이용하여 컴파일 하곤 하는데요, GCC는 "GNU Compiler Collection"의 준말로 유닉스/리눅스 OS의 대표적인 컴파일러입니다. 이것을 윈도우에서 사용하기 위해 MinGW가 터미널 환경을 제공해줍니다. 이 포스트에서는 MinGW의 설치부터 이를 이용한 VSCode 개발환경 조성까지 함께 진행해봅시다! 1. GCC 설치하기 Downloads - MinGW-w64 < MinGW 설치 사이트 MinGW는 위 사이트를 통해 설치할 수 있습니다. 스크롤을 중반쯤 내리시면 Mingw-builds 가 있습니다. 여기에 링크되어 있는 GitHub 홈페..
[C] GCC로 Visual Studio Code에서 C 파일 컴파일하기GCC 컴파일러 Visual Studio Code(이하 VSCode)는 자체적인 C 컴파일러를 가지고 있지 않습니다. 따라서 디버깅할 때 GCC 컴파일러를 이용하여 컴파일 하곤 하는데요, GCC는 "GNU Compiler Collection"의 준말로 유닉스/리눅스 OS의 대표적인 컴파일러입니다. 이것을 윈도우에서 사용하기 위해 MinGW가 터미널 환경을 제공해줍니다. 이 포스트에서는 MinGW의 설치부터 이를 이용한 VSCode 개발환경 조성까지 함께 진행해봅시다! 1. GCC 설치하기 Downloads - MinGW-w64 < MinGW 설치 사이트 MinGW는 위 사이트를 통해 설치할 수 있습니다. 스크롤을 중반쯤 내리시면 Mingw-builds 가 있습니다. 여기에 링크되어 있는 GitHub 홈페..
2023.11.19 -
컴파일 (Compile) 컴파일이란 고수준 언어(C, Java, Python..)를 컴퓨터가 이해할 수 있는 기계어로 번역하는 과정을 말한다. VS2022에서는 컴파일을 ▶ 버튼을 누르면 자동으로 해줌과 동시에 .exe 파일을 실행시켜주는데, 이 포스팅에서는 우리가 Developer Command Prompt를 이용하여 직접 컴파일하는 방법을 알아보고자 한다. .c 파일 3개 제작 테스트를 위해 간단한 계산기 코드를 작성했다. add(덧셈), sub(뺄셈), div(나눗셈), mul(곱셈) 총 4개의 함수를 통해 사칙연산을 수행하며 3개의 .c 파일로 나누어 작성했다. add, sub, mul은 operation.c, div는 division.c, main() 함수를 통해 이 함수들의 함숫값을 출력하는 ..
[C] VS2022 Developer Command Prompt로 컴파일하기컴파일 (Compile) 컴파일이란 고수준 언어(C, Java, Python..)를 컴퓨터가 이해할 수 있는 기계어로 번역하는 과정을 말한다. VS2022에서는 컴파일을 ▶ 버튼을 누르면 자동으로 해줌과 동시에 .exe 파일을 실행시켜주는데, 이 포스팅에서는 우리가 Developer Command Prompt를 이용하여 직접 컴파일하는 방법을 알아보고자 한다. .c 파일 3개 제작 테스트를 위해 간단한 계산기 코드를 작성했다. add(덧셈), sub(뺄셈), div(나눗셈), mul(곱셈) 총 4개의 함수를 통해 사칙연산을 수행하며 3개의 .c 파일로 나누어 작성했다. add, sub, mul은 operation.c, div는 division.c, main() 함수를 통해 이 함수들의 함숫값을 출력하는 ..
2023.11.15 -
캐스팅 (Casting) '어떤 배우를 캐스팅했다'라는 말에도 쓰이는 캐스팅은 영어 단어로 '배역 선정'이다. 말의 뜻과 비슷하게 자바에서도 캐스팅은 타입 변환을 의미한다. 특정 타입의 객체 또는 변수가 다른 타입으로 바뀌는 것인데, 인스턴스(클래스 객체)에도 업캐스팅, 다운캐스팅이라는 총 두 가지 방법을 이용할 수 있다. 이 캐스팅 작업을 통해 메소드에서 객체를 사용할 때 특정 클래스로 보편화하여 그 클래스의 메소드를 사용하는 등 코드 일반화를 할 수 있다. 이 부분은 추후에 제네릭 클래스와 메소드에서 다룰 예정이다. 업캐스팅 (Upcasting) 자바에서 서브 클래스(자식 클래스)는 슈퍼 클래스(부모 클래스)로부터 모든 멤버와 메소드를 상속받는다. 따라서 부모 클래스로 변환해도 아무런 문제가 없다. ..
[Java] 업캐스팅과 다운캐스팅캐스팅 (Casting) '어떤 배우를 캐스팅했다'라는 말에도 쓰이는 캐스팅은 영어 단어로 '배역 선정'이다. 말의 뜻과 비슷하게 자바에서도 캐스팅은 타입 변환을 의미한다. 특정 타입의 객체 또는 변수가 다른 타입으로 바뀌는 것인데, 인스턴스(클래스 객체)에도 업캐스팅, 다운캐스팅이라는 총 두 가지 방법을 이용할 수 있다. 이 캐스팅 작업을 통해 메소드에서 객체를 사용할 때 특정 클래스로 보편화하여 그 클래스의 메소드를 사용하는 등 코드 일반화를 할 수 있다. 이 부분은 추후에 제네릭 클래스와 메소드에서 다룰 예정이다. 업캐스팅 (Upcasting) 자바에서 서브 클래스(자식 클래스)는 슈퍼 클래스(부모 클래스)로부터 모든 멤버와 메소드를 상속받는다. 따라서 부모 클래스로 변환해도 아무런 문제가 없다. ..
2023.11.10