Busan IT/제어 UI(C#)

객체 지향 프로그래밍과 클래스

newind2000 2015. 6. 2. 13:51

================================ Outline ====================================

전날 복습

객체 지향 프로그래밍과 클래스

코딩을 통한 클래스의 이해 

학점 관리 프로그램 코딩 - 객체지향적

----------------------------------------------------------------------------

 

** 전날 복습

 

- 메소드의 정의

- 매게 변수의 정의

- Swap 메소드를 사용할 때 ‘ref’를 사용하여 참조 값을 전달한다.

- 다수의 반환 값이 발생하는 경우 'out'을 사용하여 처리 한다.

- 메소드 오버로딩의 정의: 함수의 이름은 동일하나 매개 변수의 숫자나 타입이 다른 경우 이를 다형성을 사용하여 이를 지원하는 기능

- 가변길이의 매개 변수는 'params'라는 코드를 사용하여 호출

- 명명된 매개변수는 인자의 이름을 직접 기입후 값을 넣어주는 것

- 선택적 매개변수는 인자의 기본 값을 초기화를 통해 선언해 준 후 값이 다른 경우만 매개 변수를 직접 넣어주는 것

 

<객체 지향 프로그래밍과 클래스>

 

객체란 무엇일까?

 

- 각 각의 기능을 가진 조각들을 객체라고 할 수 있다. 프로그래밍적으로 객체란 프로그램에 사용되는 모든 코드를 지칭한다.

 

- 코드를 사용할 때 일반적인 특성을 추출하여 보편적으로 적용되는 형식으로 만드는 것을 객체화라고 할 수 있다.

 

- 추상화를 통해 실제 객체의 주요 특징만 뽑아 일반화 시키는 능력이 필요하다.

 

- 레고 블록을 예로 들어 블록을 집을 만든다고 할 때 이것을 세부화하여 간단히 네모, 세모, 동그라미로 나눈 후 이것들을 조합하여 집을 짓는 것이다. 이처럼 전체 작업을 세부화하여 정형화하고 차후에 정형화된 조각들을 끌어 모아 재사용하는 것이 객체 지향이 추구하는 방법이다.


- 붕어빵을 예로 들면 붕어빵들은 클래쓰, 붕어빵은 객체

 

- 객체는 instance라고 부르며, 이는 실체라는 뜻이다. 객체가 실현되어 메모리 상에 올라와 있는 것이 객체가 실현된 상태이다.

 

- 모든 클래스는 복합 데이터 형식이다. , 기본 데이터 형식을 조합해서 만드는 사용자 정의 데이터 형식.

 

 

<코딩을 통한 클래스의 이해>

 

자동차를 만든다고 가정하고 클래스를 활용한 코딩을 해보자.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20150602_class_concept
{
    class Program
    {
        static void Main(string[] args)
        {
            car sonata = new car();     
            // 'car()'를 객체를 생성해주는 역할을 하는 '생성자라고 부른다.
            sonata.color = "red";
            // C에서의 함수는 실체의 이름없이 그냥 함수의 이름만 넣어주면 가능했지만
            // 메소드는 인스턴스의 값을 넣어주어야 한다.
            sonata.wheel = "4";
            sonata.model = "2015 Limited";
            sonata.drive(k: "100km");


            car tico = new car();
            tico.color = "white";
            tico.wheel = "2";
            tico.model = "rectangle sugar";
            tico.drive(k: "50km");
            tico.brake();

            QM3 n1 = new QM3();     
            //car를 상속받은 'QM3' 상속자는 메소드를 재정의 할 수 있는데 
            //이것을 overriding이라고 한다.
                                    
            
            
        }
    }

    class car               //자동차를 만드는 객체
    {
        // public을 사용하여 외부 접근 허용
        public string color;    
        public string wheel;
        public string model;
        public void drive(string k) 
        {
            this.wheel = k; //만들어질 객체를 지칭할 때 'this'를 사용
        }
        public void brake() { }

    }

    class QM3:car        //class car로부터 상속 받겠다는 표시
    {
        ;
    }
}

** 과정 끝 무렵에 mySQL을 활용한 데이터 베이스에 사용에 대해 배워보도록 하겠다.


- 생성자와 소멸자 

프로그래머가 명시적으로 생성자를 만들어주지 않을 때 컴파일러가 기본 생성자(default constructor)를 만들어준다. 생성자는 다형성을 지원하기 때문에 매게 변수의 숫자와 타입에 따라 사용자가 생성자를 만들어 사용할 수 있다.


<객체지향적 코딩 - 학점 관리 프로그램>



 

    class STUDENT           //데이터 저장소의 역할
    {
        
        //이름 국어 영어 수학 필드
        string Name;
        int sKor;
        int sEng;
        int sMath;
        int sum;
        float average;
        char grade;

        /*** 생성자 ***/        
        public STUDENT(/* input */ string sName, int Kor, int Eng, int Math, /* output */ out string Name, out int sKor, out int sEng, out int sMath)
        {
            Name = sName;
            sKor = Kor;
            sEng = Eng;
            sMath = Math;
        }
                
        //총점 메소드

        public void Sum(out int sum)
        {
            sum = sKor+sEng+sMath;
        
        }
      
        //평균 메소드
        public void Average(int sum, out float average)
        {
            average = sum / 3;
            
        }
        //학점 메소드
        public void Grade(float average, out char grade)
        {
            if (average >= 90)
            {
                grade = 'A';
            }
            else if (average >= 80)
            {
                grade = 'B';

            }
            else if (average >= 70)
            {
                grade = 'C';

            }
            else
            {
                grade = 'F';
            }
        }

    }

 

반응형