성장일기
05/28 스마트팩토리 교육- 본문
메모장에 코드를 쓰고 확장자를 cs로 바꿔주면 c#파일로 바뀜
비주얼 스튜디오는 IDE
(통합개발환경 IDE: Integrated Development Environment)
원래 도스창에서 명령어를 넣어 컴파일을 하고 실행 해줘야하지만 vs가 지원함
○명령행 컴파일러
○배열
ar은 int배열 10개를 참조한다
int ar[10]; - 기본형
new int[2,3] - 2차원배열
배열의 중첩은 잘 쓰지않음
○클래스
기존프로그램이 현실반영이 어려워서 현실반영을 위한 객체지향프로그램이 나옴
객체의 특징을 쭉 적어보는 것,서술(사양서)-class = 틀
붕어빵 틀=클래스, 붕어빵 =객체
클래스를 정의해놓으면 객체를 대량생산해낼 수 있음
class 이름
{
}
정보는 행위정보와 상태정보를 만든다.
행위정보는 메소드로, 상태는 변수로표현한다
º유효범위
프로그래밍에서 특정이름(변수명 등)이 영향을 미치는 영역
중괄호로 영역표시
유효범위 안에서 같은 변수명은 한번만 쓸 수 있다.
참고)
º
string,배열, 클래스, object 모두 참조형식
값을 스택에 저장-값형식, 힙에 저장-참조형식
초기화되지 않은 모든 참조형 변수는 null 값을 가진다
57p
int n1=5;
int n2=n1;
둘다 5를 출력하지만 값형인 int형에서는 같은 영역을 사용하는것이 아닌 각각 고유영역이 있다
int n2는 5를 복사해서 고유영역을 가지는 것이다
string txt1="C#";
string txt2=txt1;
둘다 C#을 출력하지만 참조형인 string에서는 C#의 주소를 전달하는 것이다
º
string name = "C#";
name = null;
null을 넣으면 객체가 생성되어있지만 더이상 C#을 가리키지않음
가비지 컬렉션
C++의 경우 가비지를 모아둠->메모리문제 발생(하지만 안정성 높음)
C#이나 Java는 알아서 처리함(가비지 컬렉션)
ºpublic 접근속성
외부에 보여주기위한 예약어
public을 적지 않으면 노출이안됌(접근제어)-언어에 따라 다를 수 있음(C는 다보여줌)
class안에 속해있는 변수들->멤버 변수(member variable) or (필드,field)
속성은 C#코드에서 필드로 표현되고, 행위는 메서드로 표현된다
타입(class) = 속성(field) + 행위(method)
º
메서드=서브루틴(subroutine),프로시저(procedure)
하위코드를 뜻함
○생성자
특별한 용도의 메서드, 객체가 "생성"되는 시점에 해당 메서드가 자동으로 호출
생성자 없이는 컴파일되지 않음-> 생성자를 명시적으로 정의하지 않으면 C#컴파일러가
일부러 빈 생성자를 클래스에 집어넣고 컴파일한다.
º일반 메소드의 경우
반환타입 메소드이름(매개변수)
{
}
º생성자 메소드의 경우
메소드or 클래스이름(매개변수) -반환타입이 없다
{
}
º소스
class Car
{
public int _iSpeed;
public Car(int iSpeed) 생성자에 인자를 넣음
{
_iSpeed = iSpeed;
Console.WriteLine("Car 클래스 생성됨");
}
public void Acc()
{
_iSpeed = _iSpeed + 10;
}
public void DeAcc()
{
_iSpeed = _iSpeed - 10;
}
public void Status()
{
Console.WriteLine("현재 속도는 {0}Km입니다.", _iSpeed);
}
}
static void Main(string[] args)
{
Console.WriteLine("1=================");
Car MyCar = new Car(3);
MyCar.Status();
Console.WriteLine("2=================");
Car MyCar1 = new Car(100);
MyCar1.Status();
Console.WriteLine("3=================");
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _20200528_002
{
class Program
{
class Car
{
public int _iSpeed;
public Car(int iSpeed)
{
_iSpeed = iSpeed;
Console.WriteLine("Car 클래스 생성됨");
}
public void Acc()
{
_iSpeed = _iSpeed + 10;
}
public void DeAcc()
{
_iSpeed = _iSpeed - 10;
}
public void Status()
{
Console.WriteLine("현재 속도는 {0}Km입니다.", _iSpeed);
}
}
static void Main(string[] args)
{
Console.WriteLine("1=================");
Car MyCar = new Car(3);
MyCar.Status();
Console.WriteLine("2=================");
Car MyCar1 = new Car(100);
MyCar1.Status();
Console.WriteLine("3=================");
}
}
}
인자가 하나도 없는 생성자-default 생성자
주의) 명시적으로 생성자를 하나라도 정의한경우 컴파일러는 기본 생성자를 추가하지 않음
인자의 개수나 타입이 다르면 함수이름이 겹치는것이 허용된다-메소드의 중복
(method overloading)
'프로그래밍언어 > C#' 카테고리의 다른 글
06/01 스마트팩토리 교육 -생성자, 정보은닉, 프로퍼티,상속,is as 연산자 (0) | 2020.06.01 |
---|---|
05/29 스마트팩토리 교육- 종료자, 정적멤버, 인스턴스 멤버, 정적 생성자 (0) | 2020.05.29 |
05/27 스마트팩토리 교육-struct, class, 배열 (0) | 2020.05.27 |
05/26 스마트팩토리 교육- 메소드 (0) | 2020.05.26 |
05/26 스마트팩토리 교육 - 점프문 (0) | 2020.05.26 |