외규장각 도서 환수 모금 캠페인

'Interesting'에 해당되는 글 74건

  1. 2008.11.06 C#의 Data Types
  2. 2008.11.06 C# 처음으로 코딩해봤어요...ㅎㅎ
  3. 2008.10.28 2. 객체의 사용
  4. 2008.10.21 1. 자바로 "Hello World" 출력하기

C#의 Data Types

Interesting/C# 2008. 11. 6. 16:52
Value Types
일반적으로 3가지의 타입이 있다.
1. Built-in Type(내장형 타입)
2. User-defined Types(사용자 정의 타입)
3. Enumerations(열거형)

-----------------------------------------------------------------------------------------------------------
Built-in Value Types
 sbyte  1 byte
 byte  1 byte 
 short  2 byte
 int  4 byte
 uint  4 byte
 long  8 byte
 float  3 byte
 double  8 byte
 decimal  16 byte

other Value Types
 char  2 byte 
 bool  4 byte
 date  8 byte

위에서 언급한 Value Type들은 직접 직접 데이터를 가지며 변수에는 원본 데이터에 대한 복사본이 저장되며 한 변수에 대한 연산이 다른 변수에 영향을 미칠 수 없다는 특징이 있습니다. 참고로 C#은 대소문자를 구분해줍니다.

Value Types을 정의하는 방법은 다음과 같습니다.
1. Built-in Type
bool b = false;
다른 언어와 마찬가지로 변수가 직접 데이터를 가지기 때문에 위와 같이 정의 해줍니다.

2. User-defined Type
유저정의 타입은 표현을 할때 일반적으로 구조체를 사용한다. 여기 소스를 보면 쉽게이해가 갈 것이다.

using System;
using System.Collections.Generic;
using System.Text;

namespace User_defined_types
{
    struct Int_user_defined
    {
        int number1, number2, number3;
        public Int_user_defined(int _number1, int _number2, int _number3)
        {
            number1 = _number1;
            number2 = _number2;
            number3 = _number3;
        }
        public int Value(int i)
        {
            if (i == 1)
                return number1;
            else if (i == 2)
                return number2;
            else if (i == 3)
                return number3;
            return 0;
        }
        public override string ToString()
        {
            return base.ToString();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Int_user_defined test1 = new Int_user_defined(1, 10, 100);
            Console.WriteLine("number1 = {0}, number2 = {1}, number3 = {2}", test1.Value(1),test1.Value(2),test1.Value(3));
        }
    }
}





3. Enumerations
열거형들은 고정된 값들을 가지고 있습니다. 하지만 고정된 값들은 모두 하나의 연관성을 가지고 있으며 그 중에 하나만을 선택하거나 할 때 사용하면 유용하게 쓰입니다.

using System;
using System.Collections.Generic;
using System.Text;

namespace enum_test
{
    enum Selection : int { Red, Green, Blue};
    class Program
    {
        static void Main(string[] args)
        {
            Selection s = Selection.Red;
            Console.WriteLine("{0}",s);
        }
    }
}




-----------------------------------------------------------------------------------------------------------
Reference Types
Reference Types은 해당 타입의 인스턴스(instance)에 대한 참조입니다. 여기서 타입의 인스턴스를 개체라고 부릅니다. 개체는 object 입니다. 일반적으로 포인터라고 불리워집니다.
Value Types은 변수의 값을 그대로 복사해오는 것이지만 Reference Type은 개체 자체를 복사해서 그가 가진 모든 것들을 복사하는 것입니다.

using System;
using System.Collections.Generic;
using System.Text;

namespace reference_types
{
    struct Numbers
    {
        public int val;
       
        public Numbers(int _val)
        {
            val = _val;
        }
        public override string ToString()
        {
            return val.ToString();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Numbers n1 = new Numbers(0);
            Numbers n2 = n1;
            n1.val += 1;
            n2.val += 2;
            Console.WriteLine("n1 = {0}, n2 ={1}", n1, n2);
        }
    }
}





Commom Reference Types
 System.Object
 System.String
 System.Text.StringBuilder
 System.Array
 System.IO.Stream
 System.Exception

Posted by 닉네임영역
,
원서를 가지고 처음으로 코딩했다.
마소에서 출판한 시험 대비용 책이긴 하지만 원서라서 적응할 시간이 필요했다.
사실 원서는 처음 사용하는 것 같다.
대학교 7학기를 다니면서 신기하게도 거의 번역본이나 국내에서 편찬된 책을 본 것 같다.
참으로 신기하지 않을 수 없다.

원서를 보고 코딩을 짜보니 그제서야 이해가 확실히 되는듯....ㅋㅋㅋ
확실히라는 단어가 100%를 말하는것은 아니지만

C#은 처음 해보았지만 C++과 자바의 합성(?)정도의 느낌이다.
머 닷넷으로 하다보니 그런 느낌일 수 있지만 왠지 그런 느낌이다.
자바의 느낌이 작고 C++의 느낌이 강하긴 하다.

이제부터 C#을 독학하려 한다.ㅋ
쉽지않지만 머...인터넷이 있으니...ㅎㅎ
얼마나 많은 시간이 소요될지는 해봐야 알겠지..

Posted by 닉네임영역
,
1. 형과 변수
자바의 값에는 그에 해당하는 형(Type)이 있다.
ex) "Hello World" -> String 형
     System.out -> PrintStream
     13 -> int
변수 : 형, 이름, 값을 담아두는 메모리 상의 저장소
변수 선언 ex) String greeting = "Hello World!";
        특정 형의 변수를 새로 선언하고, (option)초기값을 배정한다.
식별자 : 변수, 메소드, 클래스의 이름을 말한다.
식별자의 규칙
*문자, 숫자, 밑줄문자(_)를 나열하여 만들수 있다. 단 숫자로 시작할 수 없다.
*?와 %와 같은 그 이외의 심벌은 사용불가
*공백은 들어갈수 없다.
*public과 같은 예약어(프로그램이 정해놓은 단어) 사용불가
*대소문자 구분

2. 배정 연산자
배정 연산자(=)를 통해 변수를 초기화해야 한다.또 배정 연산자를 통해 재배정할 수 있다.
int luckyNumber = 13;
과 같은 방법으로 luckyNumber라는 변수에 13이라는 값을 배정하였다.
여기에 다시 luckyNumber = 12;를 입력하면
luckyNumber라는 변수에는 12가 배정된다.

3. 객체, 클래스, 메소드
객체 : 프로그램에서 메소드 호출의 대상이 되는 실체
메소드 : 객체의 내부 데이터에 접근하는 일련의 명령으로 구성
클래스 : 자신에 속한 객체에 적용할 수 있는 메소드 정의

4. 메소드 매개변수와 반환 값
매개변수는 메소드의 입력이 되어 정해진 명령을 수행가능하게 해준다.
메소드의 반환값은 호출한 코드에서 사용하기 위해서 메세지가 계산한 결과이다.
ex) System.out.println(greeting)
     System.out.println는 C의 printf와 같은 기능을 하는 메소드이다. greeting이 매개변수이며 메소드의 입력이 된다.
하나의 클래스에 같은 이름의 메소드가 둘 이상인 경우(매개 변수형은 다름) 메소드이름이 중복되었다고 한다.

5. 수형
|- 정수 : 전체 수
|- 부동소수점 : 소수점 이하 부분
    -> 컴퓨터에서 주를 일련의 유효숫자(1~9)와 소수점의 위치로 어떻게 표현하는가를 나타낸다.
double형은 소수점 이하 부분을 가질 수 있는 부동소수점수를 나타낸다.

6. 객체의 구성
ex) Rectangle 클래스
 

이것은 4개의 수를 담고 있는 메모리 블록을 나타낸다. 실제로 Rectangle 클래스는 4개의 변수로 구성되어 있다.

이때 새 객체를 구성 하는 방법은 new 연산자, 클래스이름, 매개변수나열이다.
 new Rectangle(5, 10, 20, 30)
보통 new 연산자의 결과는 변수에 저장되므로
ex) Rectangle box = new Rectangle(5, 10, 20,30);
만약 매개변수 없이 객체를 구성한다해도 괄호는 붙여야 하며 변수는 모두 0이다.
ex) new Rectangle();

7. 접근 메소드와 상태변이 메소드
접근 메소드 : 객체에 접근하여 객체의 상태를 바꾸지 않고 그 객체에 대한 정보를 반환해주는 메소드
ex) String 클래스의 length 메소드
상태변이 메소드 : 객체의 상태를 바꾸는게 목적인 메소드
ex) Rectangle 클래스의 translate 메소드
--------------------------------------------------------
import java.awt.Rectangle;
public class MoveTester {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Rectangle box = new Rectangle(5, 10, 20, 30);
  
  box.translate(15, 25);
  
  System.out.println("After moving, the top-left corner is : ");
  System.out.println(box.getX());
  System.out.println(box.getY());
 }
}
--------------------------------------------------------
컴파일을 해보면 상태변이 메소드로 인해 X Y값이 변했다는 것을 알 수 있다.

<참고>
자바의 모든 API는 웹상에 공개되어 있는 설명도 되어있다.
자바 API 보러가기

9. 객체 참조
객체가 선언되어 초기화가 되었다고 해서 하나의 객체가 모든 정보를 가지고 있는 것이 아니고 객체는 단지 메모리 블록에 대한 주소값을 가지고 있는 것이다.

그림과 같이 된다.
만약 Rectangle box2 = box;를 추가하게 된다면 어떻게 될것인가?

이렇게 같은 주소를 가리키게 되어 box2로도 접근이 가능하다

수는 객체와 달리 그 값을 그대로 가지게 된다.
int luckyNumber = 13; 이라고 정의를 하게 되면
메모리의 어느 한 부분에 luckyNumber = 13이라고 저장된다.
만약 int luckyNumber2 = luckyNumber; 라고 정의를 한다면???
이것은 luckyNumber의 숫자를 읽어서 luckyNumber2의 메모리영역에 복사가 된다.

객체와 수의 참조는 다르다는 것을 명심하길 바란다.

ps. 역시나 두번째도 쉽지 않네요;;;;
     이러다가 언제 마무리 할지 모르겠어요.^^;;;
Posted by 닉네임영역
,

제가 교재로 삼은 것은 "Big Java -Cay Horstmann-" 2nd Edition입니다.
개인적으로 자바를 코딩하기 위해서 필요한 툴로는 이클립스를 추천합니다.
메모리도 적게 잡아먹고 쓰기도 편해서...

이론적인 부분은 간단하게 하고 넘어가겠습니다.

자바는 원래 가전기기 프로그램용으로 설계되었으나, 실용화에 성공한 사례는 인터넷 애플릿을 작성하는데 사용된 것이 최초이다.
자바는 안전하고 이동 가능하도록 설계되어서, 인터넷 사용자뿐만 아니라 배우는 학생에게 이로운 언어이다.
자바 라이브러리는 매우 방대하므로, 각자의 프로그래밍 프로젝트에 필요한 부분을 배우는데 집중하도록 해야 한다.
자바는 대소문자 구분한다.
클래스는 자바 프로그램을 만드는 기본단위 블록이다.
모든 자바 애플리케이션에는 main 메소드를가진 클래스가 하나 있다. 어플리케이션의 실행이 시작되면 main 메소드에 있는 명령이 실행된다.
각 클래스에는 메소드 정의가 포함되어 있고, 각 메소드에는 일련의 명령들이 포함되어 있다.
메소드를 호출하려면 객체이름, 메소드 이름, 메소드 매개변수를 명시해야 한다.
스트링은 이중따옴표로 둘려싸여 있는 문자의 나열이다.

위는 대략적인 이론을 적었습니다. 나중에 익숙해지면 크게 상관없는 것이니 초반에는 조금 인식하면 될 것입니다.

처음이니 프로그램 설치와 간단한 사용법 그리고 "Hello World!"를 출력하는 것을 해보겠습니다.
우선 이클립스를 다운받아서 설치를 합니다.
이클립스는 다른 프로그램과 달리 install을 하는 것이 아니고 압축을 풀면 그것이 설치가 된것입니다.
다음으로 자바를 설치합니다.(http://java.sun.com)
코딩을 하기 위한 이클립스 기본 셋팅은
java project를 만들고 그 project 안에 class를 만들고 코딩을 하게 됩니다.
여기서 주의할 점은 java project 명과 class명은 같으면 에러가 나기 때문에 다르게 하셔야합니다.
이미지로 보여드리겠습니다.






여기까지 했다면 프로젝트가 완성되고 다음과 같은 화면이 보입니다.


그럼 이제 class를 만들도록 하겠습니다.








그럼 이제 코딩을 하면 됩니다.
public static void main(String[] args) {
  // TODO Auto-generated method stub

 }
 이부분에 코딩하면 되는 것입니다.

System.out.println("Hello World!");
라고 입력을 합니다.


결과값은 다음과 같이 나옵니다. 그렇지 않다면 처음부터 차근차근 다시 해보시길 바랍니다.

이것이 실행버튼인데 왼쪽버튼은 현재 활성화된거 실행 오른쪽거는 열려있는 프로젝트중 실행할것 고르는 버튼
혹 저 버튼을 눌렀을 경우 실행되지 않고 다른 창이 보일경우
Run -> Run As 의 실행하고자 하는 프로젝트를 실행하면 됩니다.
그럼 그 다음부터는 버튼을 이용하여 실행시킬수 있습니다.

제가 포토샵을 거의 쓸 줄 모르는 관계로 좀 허접합니다.
이해바랍니다 꾸벅.
그럼 처음은 이걸로 끝!

ps. 좀 힘드네요;;;
     다른 분들도 포스팅 저처럼 힘드신가요??
     전 처음이라;;;ㅠㅠ

Posted by 닉네임영역
,


사랑합니다. 편안히 잠드소서