본문 바로가기

전체 글1062

상속이란? 상속이란  상속은 객체지향 프로그래밍(OOP)의 꽃이라 불릴 만큼 중요한 개념입니다.여러 클래스가 공통적으로 가지는 요소를 상위 클래스(부모 클래스) 에 정의한 후, 이를 하위 클래스(자식 클래스) 가 물려받아 재사용하는 방식입니다. ✅ 주요 특징코드 중복 방지: 동일한 기능을 여러 클래스에서 반복적으로 구현할 필요 없음.유지보수 용이: 부모 클래스의 변경 사항이 하위 클래스에도 자동 반영됨.확장성 강화: 상속받은 클래스를 기반으로 새로운 기능을 쉽게 추가 가능. 🔹 클래스의 정규화 (Normalization)객체지향 설계에서 중복 요소를 제거하는 과정입니다. 📌 예제❌ 정규화 전: 각 관리자 클래스가 중복된 로그인() 메소드를 개별적으로 구현✅ 정규화 후: 관리자추상클래스에서 로그인()을 정의하고,.. 2025. 2. 10.
Frame을 활용한 최종 통합 및 실행 Frame을 활용한 최종 통합 및 실행  이제까지 Frame을 활용하여 폴더 탐색, 파일 목록 정리, 이미지 표시 기능을 각각 독립적으로 구현하는 방법을 알아봤습니다.이번 포스팅에서는 이 모든 Frame을 하나로 통합하여완전한 Image Viewer 프로그램을 실행하는 과정을 살펴보겠습니다. Frame을 활용한 최종 구조우리가 구현한 Image Viewer는 아래와 같은 3개의 주요 Frame을 포함합니다:TfrFolder Frame폴더 트리 탐색 기능 담당선택된 폴더의 이미지 파일 목록을 TfrImageList에 전달TfrImageList Frame전달받은 이미지 파일 목록을 정렬하여 나열클릭하면 선택된 이미지를 강조 표시TfrImage Frame개별 이미지를 표시하고 선택 이벤트를 처리이제 이 Fra.. 2025. 1. 30.
프로퍼티 1 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml.Linq; namespace Property{         internal class Program    {        /*        class BirthdayInfo        {            private string name;            private DateTime birthday;             public string Name            {                get { return name; }              .. 2025. 1. 30.
Frame 활용 실습 주요 구현 코드 Frame 활용 실습 주요 구현 코드 이번 포스팅에서는 Delphi에서 Frame을 활용하여 실제로 구현하는 주요 코드를 살펴보겠습니다.이를 통해 Frame을 활용한 프로그래밍이 얼마나 강력하고 효율적인지 체험할 수 있습니다.특히, 코드 작성의 흐름과 중요한 메서드의 동작 방식을 중심으로 설명하겠습니다. Frame 활용 실습 목표폴더 탐색 및 파일 로딩사용자가 특정 폴더를 선택하면 해당 폴더의 파일 목록을 불러옵니다.이미지 표시 및 정렬선택된 파일 중 이미지를 화면에 정렬하여 표시합니다.독립적인 코드 관리Frame을 활용하여 각 기능을 분리해 관리합니다. Frame의 주요 메서드 구현1. 폴더 탐색 기능 (TfrFolder)폴더 트리 구조를 탐색하고, 선택된 폴더의 파일 목록을 가져오는 역할을 합니다. .. 2025. 1. 24.
Delphi에서 Frame 추가 및 설정하기 Delphi에서 Frame 추가 및 설정하기   프로그래밍에서 Frame은 독립적인 UI 요소를 구성하고 관리하는 데 매우 유용합니다.이번 포스팅에서는 Delphi IDE에서 Frame을 추가하고 설정하는 방법을 단계별로 설명하겠습니다.이를 통해 Frame 기반 프로젝트를 시작하는 데 필요한 기본기를 익힐 수 있습니다. Frame 추가하기Delphi에서 Frame을 추가하는 방법은 간단합니다.새 프로젝트 생성Delphi IDE에서 File > New > VCL Forms Application을 선택합니다.기본적으로 생성된 폼(Form)은 Form1이라는 이름을 가집니다.Frame 추가File > New > Other... 메뉴를 선택합니다.Delphi Files > Frame을 선택한 뒤, 새 Frame.. 2025. 1. 23.
Frame 구조 설계와 분업화 Frame 구조 설계와 분업화  프로그래밍에서 코드의 분업화와 모듈화는 프로젝트의 성공을 좌우하는 중요한 요소입니다. Frame을 활용하면 기능별로 코드를 독립적으로 관리하고 분업화할 수 있습니다. 이번 포스팅에서는 Frame 구조 설계와 분업화 방법을 소개합니다.Frame을 활용한 구조 설계의 필요성하나의 폼(Form)에 모든 기능을 구현하면 코드가 복잡해지고, 수정이나 확장이 어려워집니다. 이와 같은 문제를 해결하기 위해 Frame을 사용하면 다음과 같은 이점이 있습니다:독립적 기능 관리각 Frame이 특정 역할만 담당하여 코드가 간결해집니다.코드 가독성 향상기능별로 분리된 코드 구조로 인해 읽고 이해하기가 쉬워집니다.유지보수 용이성특정 기능을 수정할 때 해당 Frame만 변경하면 됩니다.Frame .. 2025. 1. 15.
Frame을 활용한 Image Viewer 개발 Frame을 활용한 Image Viewer 개발  이번 포스팅에서는 Frame을 활용하여 간단한 Image Viewer를 개발하는 방법을 알아보겠습니다. 기존에 복잡하게 작성된 코드를 Frame으로 분리하고, 효율적으로 관리할 수 있는 구조로 만드는 과정을 살펴봅니다. 왜 Image Viewer에 Frame을 활용해야 할까요?Image Viewer는 폴더 탐색, 파일 로딩, 이미지 표시 등의 기능을 포함한 프로그램입니다. 기존 방식으로 코드를 작성하면:모든 코드가 하나의 폼(Form)에 작성되어 복잡도가 증가합니다.기능별로 나눠지지 않아 유지보수가 어려워집니다.하지만 Frame을 활용하면:코드 분업화: 폴더 탐색, 파일 로딩, 이미지 표시 기능을 각각의 Frame으로 나눌 수 있습니다.가독성 향상: 각 .. 2025. 1. 6.
Frame을 활용한 간단한 프로그램 예제 Frame을 활용한 간단한 프로그램 예제   프로그래밍에서 간결하고 효율적인 코드 작성은 매우 중요합니다. 특히, 한 화면에 여러 기능이 필요하거나 중복 작업을 줄이고 싶을 때, Frame은 훌륭한 해결책이 될 수 있습니다. 이번 포스팅에서는 Frame을 사용한 간단한 프로그램 예제를 통해 실전 활용법을 알아보겠습니다.Frame을 사용하지 않은 경우의 문제점Frame을 사용하지 않으면 모든 기능을 하나의 폼(Form)에 구현해야 합니다. 이 경우:코드가 한 곳에 집중되어 가독성이 떨어집니다.동일한 기능을 여러 폼에서 사용해야 할 때 코드 중복이 발생합니다.유지보수 시 특정 기능만 수정하려 해도 다른 코드에 영향을 줄 가능성이 큽니다.이런 문제를 해결하기 위해 Frame을 활용하면 코드의 캡슐화와 재사용성.. 2025. 1. 5.
프로그래머라면 알아야 할 Frame 활용의 기본 개념 프로그래머라면 알아야 할 Frame 활용의 기본 개념  프로그래밍을 하다 보면 한 화면에서 다양한 기능을 그룹화해야 할 때가 많습니다. 특히, 하나의 폼(Form)에 여러 컴포넌트를 추가하게 되면 코드가 복잡해지고 유지보수가 어려워질 수 있습니다. 이런 경우, TFrame을 활용하면 보다 효율적으로 화면을 설계하고 코드를 관리할 수 있습니다.Frame이란 무엇인가요?Frame은 Delphi에서 제공하는 유용한 UI 설계 도구로, 하나의 폼을 여러 개로 나눠 작업할 수 있도록 도와줍니다. 쉽게 말해, **"재사용 가능한 미니 폼"**이라고 할 수 있습니다. Frame을 사용하면 각 기능별로 코드를 캡슐화하고 독립적으로 관리할 수 있어, 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다.Frame을 왜.. 2025. 1. 4.
추상클래스 추상클래스 using @interface;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks; namespace @interface{    interface IRunnable    {        void Run();    }     interface IFlyable    {        void Fly();    }     class FlyingCar : IRunnable, IFlyable    {        public void Run()        {            Console.WriteLine("Run! Run!".. 2024. 12. 12.
클래스 c# 클래스using System.Drawing;using System.Net.Http.Headers;using System.Timers;using System.Collections.Generic;using System.Security.Cryptography.X509Certificates;using System.Runtime.CompilerServices; namespace _07_Class{          readonly struct RGBColor    {        public readonly byte R;        public readonly byte G;        public readonly byte B;         public RGBColor(byte r, byte g, byt.. 2024. 12. 3.
필드데이터 합치기 필드데이터 합치기    CONCAT(,'동 ','층 ','호 ') As Test 2024. 9. 26.
메소드 ( Method) 메소드 ( Method)    using System.Net.Http.Headers;using System.Security.Cryptography; namespace _06_Method{    internal class Program    {        static int Fibonacci(int n)        {            if (n  0)                    Console.WriteLine(", ");                 Console.Write(args[i]);                sum += args[i];            }            Console.WriteLine();             return sum;        }     .. 2024. 8. 16.
코드의 흐림제어 using System.Collections.Generic; namespace _05_Code{    //형식패턴 클래스 선언    class Preschooler { }    class Underage { }    class Adult { }    class Senior { }     internal class Program    {         #region 형식 패턴         static int CalculateFee(object visitor)        {            return visitor switch            {                Underage => 100,                Adult => 500,                Senior .. 2024. 8. 1.
한글(2Byte)문자열 깨지지 않게 자르기 한글(2Byte)문자열 깨지지 않게 자르기    WideString 을 사용하자한글을 자를때 깨진 1Byte 문자를 WideString 변수에 넣었다가String 변수로 되받아서 Trim 처리를 하면 깨진 문자가 정리되어 이걸 활용 이 예제는 C++Builder 에서도 동일하게 적용 procedure TForm1.Button1Click(Sender: TObject);varTextString, TextTrim: String;TempWide: WideString;LenthCnt: Integer;beginTextString := Trim(Edit1.Text); //원본문자열LenthCnt := StrToIntDef(Edit2.Text,7); //문자열 자를 위치 if ( Length(TextString) > .. 2024. 7. 8.
프로그램 디버그(Debug) 메시지를 찍기 프로그램 디버그(Debug) 메시지를 찍기 프로그램 작성시 디버깅을 특정상황에서 showmessage 를 통해 하는 경우도 있지만..델파이의 result 창에서 나타나게 하는 방법은 OutputDebugString 을 이용해 문자열을 출력하는 것이다. 2024. 7. 6.
해당날짜 몇 주차인지 알아내기 해당날짜 몇 주차인지 알아내기 uses System.DateUtils function myGetWeekNo(paToday:TDateTime):Word;varvWeekNo : word;vDTstart : TDate;beginvDTstart := EncodeDate( YearOf(paToday), MonthOf(paToday), 01 );vWeekNo := WeekOfTheYear(paToday) - WeekOfTheYear(vDTstart) +1;if Not (vWeekNo IN [1..6]) then //12월 31일이 월요일인경우 리턴값이 65xxx를 예방하기 위함vWeekNo := 6;Result := vWeekNo;end; 2024. 7. 5.
델파이 포인터 사용 팁 델파이 포인터 사용 팁 ShellApi 를 이용할때 윈도우에서 사용하는 언어인'C' 와 델파이의 'Pascal'의 포인터 다루는 방법이 달라많은 혼동(나만?)을 일으킨다. 특히나 파스칼에서는 포인터방법이여러가지가 있어 햇갈리기 아주 좋다. 그래서 한번 정리하여 보았다.예제는 폴더를 찾아 지정하는SHBrowseForFolder 를 이용하는 것으로 하였다. 1. 버퍼를 이용하는 방법var Buffer: array[0..255] of char; beginpszDisplayName:= @Buffer; .......MessageBox(handle, Buffer, '', MB_OK); end; 2. pChar 를 이용하는 방법 : 'C' 와 유사var Buffer: pChar;beginGetMem(Buffer, 2.. 2024. 7. 4.
Winapi.WinSock을 이용한 WOL(Wake On Lan) 구현 WinSock을 이용한 WOL(Wake On Lan) 구현   unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes,Graphics, Controls, Forms, Dialogs, StdCtrls, WinSock; typeTForm1 = class(TForm)Edit1: TEdit;Button1: TButton;Memo1: TMemo;procedure Button1Click(Sender: TObject);procedure FormCreate(Sender: TObject);procedure FormClose(Sender: TObject; var Action: TCloseAction);private{ Private declarati.. 2024. 7. 2.
C# 문법 C# 문법  global using System; using System.Globalization; using static System.Console; namespace Hello { class MainApp { //enum DialogResult { YES, NO, CANCEL, CONFIRM, OK }; enum DialogResult { YES = 10, NO, CANCEL, CONFORM = 50, OK }; static void Main(string[] args) { //1번 테스트 /* if (args.Length == 0) { Console.WriteLine("사용법 : Hello.exe "); return; } WriteLine("Hello, {0}!", args[0]); */ //2번 테.. 2024. 7. 1.