일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 무료 동영상 강의
- 프로젝트
- 표준 입출력
- 강의
- 소켓 통신
- 동영상
- 클래스 다이어그램
- 안드로이드 앱 개발
- c#
- 파이썬
- Windows Forms
- 캡슐화
- 언제나휴일
- 충남 천안
- 졸업 작품
- 실습으로 다지는 c#
- c언어
- C++
- 졸업 작품 소재
- 산책하기 좋은 곳
- 소스 코드
- 유튜브 동영상 강의
- 네트워크 프로그래밍
- 표준 라이브러리 함수
- 실습
- 알고리즘
- 언제나 휴일
- 추천
- 원격 제어 프로그램
- 동영상 강의
- Today
- Total
목록2025/01 (70)
프로그래밍 언어 및 기술 [언제나휴일]
[실습으로 다지는 C#] 직접 연관 관계(Direct Association) 실습 – 계산기, 사각형 이번 강의는 직접 연관 관계(Direct Association) 실습입니다. 직접 연관 관계는 명령을 내리는 형식과 명령을 수행하는 형식 사이의 관계로 가장 흔한 관계입니다. 이번 실습은 계산기와 사각형을 소재로 실습해 봅시다. 계산기에서는 사각형 개체를 입력받아 면적을 계산하는 기능을 제공합니다. 사각형은 너비와 높이를 멤버 필드로 갖고 이들 값을 가져오기 속성을 제공합니다. 이를 클래스 다이이어그램으로 표시하면 계산기에서 사각형으로 실선 화살표로 표현할 수 있어요.namespace 직접_연관_관계_실습{ class Rectangle { public int Height ..
[실습으로 다지는 C#] 구성(Composition) 관계 실습 – 사람, 눈 이번 강의는 구성(Composition) 관계 실습입니다. 소재는 사람과 눈입니다. 구성 관계는 소유 개체를 생성할 때 내부 개체가 같이 만들어지는 특징을 갖고 있습니다. 클래스 다이어그램을 바탕으로 코드를 구현해 보세요. 주의할 점은 Man 생성자에서 Eye 개체를 생성해야 한다는 것입니다. 별다른 알고리즘을 갖고 있는 것이 아니어서 코드 설명은 생략할게요.using System;namespace 구성_관계_실습{ class Eye { double sight; bool opened; public bool Opened { get ..
[실습으로 다지는 C#] 집합(Aggregation) 관계 실습 – 쇼핑 센터, 상품 이번 강의는 집합(Aggregation) 관계를 코드로 표현하는 실습입니다. 실습 소재는 쇼핑 센터와 상품입니다. 집합 관계는 이처럼 컬렉션과 원소 사이의 관계입니다. 상품은 상품 이름, 가격, 회사 이름, 일련 번호를 갖습니다. 일련 번호는 순차적으로 자동 부여하며 상품은 쇼핑 센터에 입고할 수 있게 표현해 봅시다. 먼저 클래스 다이어그램을 작성해 보세요. 이를 코드로 작성합시다. namespace 집합_관계{ public class Product { public string Name { get; private set; } ..
[실습으로 다지는 C#] 일반화 관계(Generalization) 실습 – 포유류, 호랑이, 사자 이번 강의에서는 일반화 관계(Generalization)를 코드로 표현하는 실습입니다. 일반화 관계는 “A는 B이다.”로 표현할 수 있는 형식 사이의 관계라고 했어요. 이번 실습에서는 “호랑이는 포유류이다.”, “사자는 포유류이다.”를 표현할 거예요. 포유류는 공통적으로 새끼에게 젖을 물리는 행위를 합니다. 그리고 울기도 합니다. 물론, 호랑이와 사자는 울음 소리가 다르죠. 이러한 내용을 실습해 볼 거예요. 먼저 클래스 다이어그램을 작성하면 다음처럼 작성할 수 있어요.여러분께서 실습할 내용과 클래스 다이어그램을 토대로 구현을 해 보세요. 그리고 비교해 보시기 바랍니다.기반 형식 포유류(Mammal)에는..
[실습으로 다지는 C#] 클래스 간의 관계 이번 강의에서는 클래스 간의 관계를 알아볼 거예요. 클래스 다이어그램으로 관계를 나타낼 때 7가지의 관계가 있어요.일반화 관계(Generalization)집합 관계(Aggregation)구성 관계(Composition)직접 연관 관계(Direct Associtaion)연관 관계 (Association)의존 관계 (Dependency)실현 관계 (Realization)일반화 관계(Generalization)는 기반 형식과 파생 형식 사이의 관계입니다. “피아니스트는 음악가이다.” 처럼 “이다.”로 표현할 수 있는 형식 사이의 관계입니다. 음악가 종류에는 피아니스트, 드러머, 기타리스트 등이 있죠. 이 때 음악가를 기반 형식이라고 말하고 피아니스트를 파생 형식이라..
[실습으로 다지는 C#] 캡슐화 실습 – 학생 클래스 정의하기이번 강의에서는 캡슐화 실습을 해 봅시다. 캡슐화는 여러 개의 멤버를 하나의 형식으로 묶는 과정을 말합니다. 이번 실습에서는 학생 클래스를 정의하는 실습을 해 보기로 할게요. 실습할 학생 클래스의 멤버는 다음과 같아요.학생 클래스 멤버 필드 아이큐 매력 번호 - 읽기 전용, 순차 부여 이름 가장 최근에 부여한 번호 - 정적 멤버 멤버 메서드 생성자(이름) 공부하다(횟수) 춤추다(횟수) 노래하다(횟수) ToString 재정의 멤버 속성 get은 public, set privateOOP 프로그래..
[실습으로 다지는 C#] 랜덤 값 맞추기 이번 강의에서는 컴퓨터가 생각한 랜덤 값(0~99)을 사용자가 10번 시도 내에 맞추는 프로그램을 만들어 봅시다. 먼저 문제를 해결하기 위한 논리를 생각하고 의사 코드(pseudo code)로 표현해 보세요. 여러분께서 먼저 작성한 후에 비교해 보세요.rnum := 랜덤 값반복(tcnt:1->10) guess := 추측값 입력 조건(guess is equals rnum) 반복문 탈출 조건(guess>rnum) 더 작다고 알려준다. 아니면 더 크다고 알려준다.조건(시도 횟수가 10보다 작거나 같..
[실습으로 다지는 C#] 암스트롱의 수 이번 실습에서는 암스트롱의 수를 판별하는 메서드를 만들어 봅시다. 암스트롱의 수는 ABC = AXAXA + BXBXB + CXCXC인 정수를 말합니다. 예를 들어 153 = 1 = 125 + 27 입니다. 이러한 수를 암스트롱의 수라고 말합니다. 이러한 암스트롱의 수를 판별하는 메서드를 만들기 전에 먼저 메서드 이름과 입력 매개 변수와 리턴 형식을 결정합니다. 언제나 알고리즘은 입력 인자와 수행 결과가 어떠한 것이 올 수 있는지를 판단할 수 있어야 합니다. 메서드 이름은 IsAmstrong으로 정할게요. 그리고 입력 인자는 판별할 정수가 필요하므로 정수형 변수 num으로 결정하고 반환은 판별 결과이므로 bool로 결정합시다.bool IsAmstrong(int num..
[실습으로 다지는 C#] 두 개의 정수 사이의 합계 구하기 이번 강의에서는 두 개의 정수를 입력 받은 후에 두 개의 정수 사이의 합계를 구하는 실습을 해 봅시다. 먼저 어떻게 해야 문제를 해결할 수 있을지 생각한 후에 의사 코드(pseudo code) 형태로 작성해 보세요. 작성한 후에 비교해 보시기 바랍니다.input := 정수를 입력 받는다. 조건(정수로 변환(input,out num1)이 실패) 오류를 출력 후 알고리즘 종료 input := 정수를 입력 받는다. 조건(정수로 변환(input,out num2)이 실패) 오류를 출력 후 알고리즘 종료 조건(num1두 수를 교환(ref num1, ref num2) temp:= num1 num1:= num2 num2:= ..
[실습으로 다지는 C#] 두 개의 정수를 입력받아 작은 수가 큰 수의 약수인지 판별이번 강의에서는 두 개의 정수를 입력받아 작은 수가 큰 수의 약수인지 판별하는 실습을 할 거예요. 이를 위해 먼저 어떠한 알고리즘으로 수행해야 하는지 고민해 보세요. 그리고 난 후에 의사 코드(pseudo code)를 작성해 봅시다. 여러분께서 먼저 작성하고 난 후에 비교해 보세요. input := 정수를 입력 받는다.조건(정수로 변환(input,out num1)이 실패) 오류를 출력 후 알고리즘 종료input := 정수를 입력 받는다.조건(정수로 변환(input,out num2)이 실패) 오류를 출력 후 알고리즘 종료큰 수를 num1에 작은 수를 num2로 설정조건(num1을 num2로 나누었을 때 몫이 0..
[실습으로 다지는 C#] 두 개의 정수를 입력받아 큰 수를 출력 이번 강의부터 제어문에 관한 실습을 진행할 거예요. 제어문 중에서도 이번 실습에서는 조건문 if else에 관한 실습입니다. 그리고 첫 번째 주제는 두 개의 정수를 입력받아 큰 수를 출력하는 실습입니다. 프로그래밍을 할 때 해야 할 작업을 바로 코드로 작성하는 것은 초반에 조급함을 달래줄 수는 있을 거예요. 하지만 실제 작업을 완료하려면 많은 시행 착오로 비용이 많이 들어갈 수 있어요. 가급적이면 해야 할 작업을 의사코드(psuedo code)나 다이어그램 등을 이용하여 논리를 전개해 본 후에 타당하다면 코드로 옮기는 습관을 가져보세요. 이와 같이 작업하면 초반에 작업이 더딘 느낌이 들 거예요. 하지만 실제 작업을 완료하기 위해 들어가는..
[실습으로 다지는 C#] 정수와 소수점 이하 자릿수 결정하기이번 강의에서는 숫자를 출력할 때 정수와 소수점 이하 자릿수를 지정하는 방법을 알아볼거예요. 다음은 자릿수를 지정하는 표현과 예를 간략하게 나타낸 것입니다.다음은 이번 실습에 사용할 변수 선언입니다.double dv = 1234.123456789;int iv = 123;포멧 문자열에 0의 갯수는 정수 자릿수를 의미하며 빈 자리는 0을 출력합니다.//0의 갯수 = 정수 자릿수(빈 자리는 0 출력) Console.WriteLine("{0:000000}", iv); Console.WriteLine("{0:000000}", dv);실행 결과000123001234“D” 형식 지정자 뒤에 정수 표현도 정수 자릿수를 의..
[실습으로 다지는 C#] 숫자 출력 – 형식 지정자 이용하기 이번 실습에서는 형식 지정자를 이용하여 숫자를 출력하는 방법을 알아보기로 할게요. 이미 이전 강의에서는 출력할 때 문자열 출력 포멧을 알아보았죠.{index[,alignment][:formatString]}{인덱스[,배치][:포멧문자열]} 포멧 문자열에는 출력할 내용을 어떠한 형식으로 출력할 것이지 나타내는 표현도 나타낼 수 있습니다. 이를 형식 지정자라 불러요.이번 실습에서는 형식 지정자를 이용하여 숫자를 표현하는 방법을 다룰거예요. 다음은 숫자를 표현할 때 사용하는 형식 지정자와 간략한 예를 나타낸 것입니다.먼저 실습에 사용할 변수를 선언하세요.int iv = 12345;double dv = 12345.6789;double dv2 = 0.2..
[실습으로 다지는 C#] 문자열 출력 포멧프로그래밍 언어를 배울 때 출력문은 언제나 제일 먼저 만납니다Console.WriteLine("Hello, World");이번 실습에서는 문자열 출력 포멧에 관한 사항입니다.문자열 출력 포멧은 Console.WriteLine 메서드는 string.Format 메서드에서 같은 방식으로 표현할 수 있습니다. 이는 둘 다 문자열을 첫 번째 인자로 받기 때문입니다.using System;namespace Demo{ class Program { static void Main(string[] args) { string str = string.Format("Hello, World"); Console.W..
이번에는 내부 저장 장치에 파일 입출력하는 간단한 앱을 만들어 봅시다. 여기에서는 일기장을 내부 저장 장치에 저장하는 예를 들기로 할게요.먼저 activity_main.xml 파일에 컨트롤을 배치합시다. 최상위 요소는 LinearLayout을 배치하세요. 그리고 DatePicker와 EditText, Button을 배치합니다. 간략하게 날짜를 선택할 수 있게 DatePicker의 canlendarViewShown을 false로 지정하고 datePickerMode를 spinner로 지정합시다. MainActivity.java 파일을 편집합시다. 먼저 배치한 DatePicker와 EditText, Button을 참조할 멤버 필드를 선언하고 파일 명을 기억할 멤버 필드를 선언하세요. ..
이번에는 Canvas와 Paint를 사용하는 간단한 실습을 합시다. 사용자는 메뉴에서 그릴 도형을 선택(선, 원)할 수 있고 펜의 두께(얇게, 두껍게)를 선택하거나 색상(빨강, 파랑, 녹색)을 선택할 수 있습니다. 그리고 선만 그리게 하거나 원만 그리거나 전체를 그리는 것을 선택할 수 있고 전체 도형을 지우거나 가장 최근에 그린 도형을 지울 수 있습니다.먼저 여기에서 그릴 두 가지 도형을 정의합시다. 먼저 선과 원의 기반 형식인 도형 클래스를 정의합시다. 도형은 시작 좌표와 끝 좌료를 멤버 필드로 갖고 펜의 두께와 색상을 갖습니다. 파생 형식에서 각 멤버 필드의 값을 변경할 수 있게 설정자를 정의하고 접근 지정은 protected로 지정하세요. 끝 좌표는 화면 터치를 이동할 때 계속 변할 수 있어야 ..
이번에는 화면에 생성한 뷰를 터치하였을 때 처리를 위한 onTouchEvent 메서드를 재정의하여 원이나 선을 그리는 간단한 앱을 만들어 보아요. LINE을 1, CIRCLE을 2로 정의하고 현재 어떠한 도형을 선택하였는지 기억하는 정적 멤버 필드 dflag를 선언하고 LINE으로 초기 설정합시다. final static int LINE=1, CIRCLE=2; static int dflag = LINE;onCreateOptionMenu를 재정의하여 LINE과 CIRCLE 메뉴를 추가합니다. 앞에서는 xml 파일에서 메뉴 아이템을 설정하는 방법을 살펴보았는데 여기에서는 java 소스 코드에서 설정하는 방법입니다. @Override public boolean onCreateOption..
이번에는 안드로이에서의 그래픽에 관해 간단히 알아보기 위한 실습을 할 거예요. 그래픽을 표현할 때에는 View 클래스에서 확장한 클래스를 정의하여 구현합니다. 그리고 기존 Activity 클래스의 onCreate 메서드에서 컨텐츠 뷰를 설정할 때 layout(activity_main.xml) 파일을 전달하였는데 여기에서는 View클래스에서 확장한 클래스 개체를 전달합니다.public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(n..
이번에는 특정 컨트롤을 우측 마우스 버튼 클릭하였을 때 나오는 컨텍스트 메뉴(Context Menu)를 사용하는 실습을 해 봅시다. 이번 실습에서는 두 개의 TextView를 배치하고 각각의 TextView 개체마다 서로 다른 Context Menu를 띄우는 실습을 할 거예요.먼저 activity_main.xml 파일에 두 개의 TextView를 배치하세요. app>>res 하위에 menu 폴더를 생성한 후에 두 개의 메뉴 파일(menu1.xml, menu2.xml)을 추가하세요.다음은 menu1.xml 파일의 내용입니다. 다음은 menu2.xml 파일의 내용입니다. 두 개의 TextView 개체를 참조할 멤버 필드를 선언하고 두 번째 TextView의..
이번에는 옵션 메뉴(Option Menu)를 사용하는 실습을 해 봅시다.먼저 프로젝트 뷰의 app>>res 하위에 menu 폴더를 추가하고 menu1.xml 파일을 추가하세요. 다음처럼 메뉴를 작성합시다. >" > activity_main.xml은 다음처럼 작성하세요. 여기에서는 단순히 메뉴에서 전체 배경 색상과 텍스트 뷰의 배경 색상을 변경할 것이기 때문에 id를 부여하는 작업 정도면 충분합니다. 이제 MainActivity.java 소스 파일을 편집합시다. 먼저 두 개의 컨트롤을 참조할 수 있는 멤버 필드를 선언하세요. LinearLayout root_layout; ..
이번에는 대화상자를 사용하는 간단한 실습을 합시다.여기에서는 단순한 정보를 전달하는 대화상자와, 확인 버튼을 누를 수 있는 대화상자, 목록 중에 원하는 항목을 선택할 수 있는 대화상자를 띄우는 실습을 할 거예요. 이에 맞게 세 개의 버튼을 배치하세요. 다음은 activity_main.xml 파일 내용입니다. 대화상자를 생성할 때 AlertDialog.Builder 클래스로 생성합니다. setTitle, setMessage 등의 메서드로 제목이나 메시지 설정 등을 할 수 있습니다. 그리고 show 메서드를 호출하여 시각화합니다. public void btnOnClick1(View view){ AlertDialog.Builder dlg = new AlertDialog.B..
이번에는 앞에서 다루었던 기본 컨트롤을 이용하는 간단한 앱을 만들어 봅시다. 소재는 도서 관리 앱입니다. 도서 관리 앱은 도서 추가, 도서 목록, 도서 검색 기능을 제공합니다. 앱의 화면은 세 개의 탭인 HOME(도서 목록), ADD(도서 추가), FIND(도서 검색)으로 원하는 기능을 선택하여 사용할 수 있습니다.먼저 도서 관리자에서 관리할 도서 개체를 Book 클래스로 정의합시다. 도서 개체는 제목, 저자, 보유 개수, 장르를 멤버 필드로 갖고 있고 이들 값을 가져오기 할 수 있는 접근자 메서드 및 생성자로 구성합니다. 참고로 장르는 인문, 자연, 과학, 기타로 정하기로 할게요.package com.example.ehclub.ex_bookmanager;/** * Created by ehclub on ..
이번에는 같은 영역에 보여줄 컨텐츠를 선택할 수 있게 하여 일관성있는 화면 구성을 할 수 있는 TabHost를 이용하는 간단한 실습을 합시다.먼저 activity_main.xml 파일에 컨트롤을 배치합시다.TabHost는 TabWidget과 FrameLayout으로 구성합니다. TabWidget은 사용자가 원하는 컨텐츠(혹은 기능)를 선택하는 영역이고 FrameLayout은 컨텐츠 영역입니다.TabWidget의 id 속성은 @android:id/tabs로 지정하고 FrameLayout의 id 속성은 @android:id/tabcontent로 지정합니다.여기에서는 언어, 기술, 예제 Tab으로 구성할 것입니다. 각 Tab을 선택하였을 때 컨텐츠를 FrameLayout에 배치합니다. 각 컨텐츠는 간단하게 L..
이번에는 ListView의 항목을 개발자가 정의하여 사용하는 실습을 합시다. 여기에서는 도서 제목과 저자를 ListView의 항목으로 정의할게요. 그리고 항목을 클릭하였을 때의 도서 정보를 TextView로 보여주고 EditText에 도서 정보를 입력하여 추가 Button을 누르면 ListView에 항목으로 나타나게 합시다.먼저 activity_main.xml에 컨트롤을 배치하세요. 최상위 요소는 LinearLayout을 배치합니다. 그리고 선택한 항목의 도서 정보를 표시할 TextView를 두 개 배치하세요. 그리고 ListView를 배치합니다. 또한 추가할 도서 정보를 입력하기 위해 EditText를 두 개 배치하고 Button을 추가하세요. 추가 버튼의 onClick 속성을 설정할 수도 있습니다. ..
이번에는 ListView를 사용하는 간단한 실습을 합시다. 실습할 내용은 ListView에 항목을 추가하는 것과 항목을 클릭하였을 때의 처리하는 것입니다.먼저 activity_main.xml 에 컨트롤을 배치합시다. 최상위 요소는 LinearLayout을 배치하세요.그리고 TextView, ListView, EditText, Button 을 자식으로 배치합니다. TextView는 ListView 항목을 클릭하였을 때 항목 정보를 보여주기 위한 목적이며 EditText와 Button은 ListView에 항목을 추가하기 위한 목적입니다. 버튼의 onClick 속성을 설정할 수 있습니다. 이 때 설정한 메서드는 Java 소스에서 작성해 주어야 합니다. 이제 MainActivity.j..
이번에는 컨텐츠에서 원하는 위치로 이동시킬 때 많이 사용하는 SeekBar를 간단히 사용하는 실습을 합시다.먼저 activity_main.xml 파일에 컨트롤을 배치합시다. 최상위 요소는 LinearLayout을 배치하세요. 그리고 자식으로 SeekBar와 TextView를 배치합니다. SeekBar의 max 속성을 100으로 지정하세요. 이제 MainActivity.java 파일을 편집합시다. 먼저 MainActivity 클래스에 SeekBar 형식의 멤버 필드를 선언하세요. SeekBar sb;onCreate 메서드에서는 먼저 xml에 배치한 SeekBar 개체를 참조하기 위해 findViewById 메서드를 호출합니다. sb = (SeekBar)findViewById(..
이번에는 별점을 부여할 때 많이 사용하는 RatingBar를 이용한 간단한 실습을 합시다.먼저 activity_main.xml 파일에 컨트롤을 배치합시다. 최상위 요소는 LinearLayout을 배치하세요.그리고 자식으로 RatingBar와 TextView를 배치합시다. RatingBar의 stepSize 속성은 변경할 수 있는 최소 간격입니다. 그리고 isIndicator 속성은 사용자에 의해 rating 값을 변경 가능 여부입니다. 주의할 점은 false일 때 사용자에 의해 변경할 수 있다는 것입니다. 이제 MainActivity.java 파일을 편집합시다. onCreate 메서드에 findViewById 메서드를 호출하여 RatingBar 개체를 참조합니다. RatingB..
이번에는 진행 상태 정도를 표시할 때 많이 사용하는 ProgressBar를 이용하는 간단한 실습을 합시다.먼저 activity_main.xml 파일에 컨트롤을 배치합시다. 최상위 요소는 LinearLayout을 배치하세요. 그리고 자식으로 ProgressBar와 네 개의 Button과 TextView를 배치합니다. 네 개의 버튼은 ProgressBar에 진행 상태의 정도를 1 증가, 5 증가, 1 감소, 5 감소시킬 때 사용하기 위함입니다. 이를 위해 네 개의 버튼의 onClick 속성을 지정하세요. 이는 Java 소스에서 정의할 메서드 이름입니다.그리고 ProgressBar의 max 속성을 100으로 지정하고 progress 속성은 0으로 지정합시다. progress 속성은 현재 진행 상태 정도를 나타..
이번에는 ToggleButton을 사용하는 간단한 실습을 합시다.먼저 activity_main.xml 파일에 컨트롤을 배치합시다. 최상위 요소는 LinearLayout입니다. 그리고 자식으로 ToggleButton과 TextView를 배치하세요. 이제 MainActivity.java 파일을 편집합시다. MainActivity 클래스에 ToggleButton을 참조할 멤버 필드를 선언하세요. ToggleButton tb;onCreate 메서드에서는 먼저 findViewById 메서드를 호출하여 xml 파일에 배치한 ToggleButton을 참조합니다. tb = (ToggleButton)findViewById(R.id.tb);그리고 클릭 리스너를 설정합니다. 리스너에서는 xml..
이번에는 On, Off 상태를 설정할 때 사용하는 Switch 컨트롤을 이용하는 간단한 앱을 만들어 봅시다.먼저 activity_main.xml에 컨트롤을 배치합시다. 최상위 요소는 LinearLayout을 배치합니다. 그리고 자식으로 Switch와 TextView를 배치하세요. 이제 MainActivity.java 파일을 편집합시다. 먼저 Switch 형식의 멤버 필드를 선언하세요. Switch sw;onCreate 메서드에서 findViewById 메서드를 호출하여 xml에 배치한 Switch를 참조합니다. sw = (Switch)findViewById(R.id.sw);초기 Switch 상태에 따라 TextView를 설정하는 작업을 호출합시다. 이 부분은 별도의 메서드로..