c# sealed class คือการทำให้ class ไม่สามารถสืบต่อได้อีกต่อไป
การประกาศ Class ให้เป็น sealed class
เราจะใส่ Keyword sealed ไว้ที่ class ก็จะทำให้ class กลายเป็น sealed class แล้ว
public sealed class Honda : Car
{
}
Complier กับ Sealed class
หากเราพยายามที่จะสืบทอด class จาก sealed class แล้ว visual studio จะฟ้องว่า ไม่อนุญาตให้ทำการสืบต่อ
จากภาพด้านล่างจะเห็นว่าได้กำหนดให้ Honda เป็น sealed class เมื่อเราทำการประกาศ class civic โดยให้สืบต่อจาก Honda class จะเห็นว่าไม่สามารถทำได้ compiler จะฟ้อง error ให้เห็นหากเราเอาเมาส์ไปชี้ข้อความ Honda ที่ขีดเส้นไว้
error ที่ visual studio บอกเราว่าไม่สามารถทำได้
C# Sealed class ใช้ประโยชน์อย่างไร
เมื่อเราออกแบบคลาสไม่ให้มีการสืบทอด นอกจากนี้ยังป้องกันผู้นำ class ไปสืบทอดใช้อย่างไม่เหมาะสม ตัวอย่างเช่น Microsoft ได้ sealed class String ไว้ ถ้าหากว่าไม่ sealed แล้วเปิดให้โปรแกรมเมอร์อย่างเราไปใช้อย่างไม่เหมาะสมก็อาจจะมีผลกระทบอื่นๆตามมาได้
นอกจากนี้การที่ระบุว่าเป็น sealed class ยังช่วยเรื่อง performance อีกด้วย เพราะว่า CLR (common language runtime) ไม่ต้องวิ่งหาคลาสลูกต่อๆไป
C# Abstract Class – คือการประกาศว่า class เป็นต้นแบบให้ class ลูกสืบทอดโดยกำหนดความสามาคถตั้งต้นให้ class ลูกเอาไปกำหนดความสามารถต่อ โดยที่ห้าม instantiate ที่ abstract class แต่ให้ instantiate ที่ class ที่สืบต่อไปแทน
ดูภาพรวมกันก่อน
Abstract class เป็นการประกาศ Class โดยที่เราจะใส่ Keyword abstract ไว้ในตอนที่ประกาศ Class
public abstract class Car
{
// Class members here.
}
// ห้าม instantiate ที่ car แต่ให้สืบต่อไปใช้งาน
public abstract class Car
{
// กำหนดให้รถทุกคันสตาร์ทเครื่องได้
public void StartEngine()
{
Debug.Write("start engine");
}
}
public class Toyota : Car
{
}
public class Honda : Car
{
}
public class ShowRoom
{
public void TestDrive()
{
Toyota toyota = new Toyota();
toyota.StartEngine();
Honda honda = new Honda();
honda.StartEngine();
}
}
c# Abstract class ส่งท้าย
เราสามารถนำประโยชน์มาใช้เพื่อ
– กำหนด/สร้างความสามารถต่างๆให้ class ลูกนำไปใช้ (สร้างมาตรฐานและลดการเขียน code ซ้ำๆ)
– ห้าม instantiate ที่ abstract class (ป้องกันการใช้ผิดโดยการให้ programmer ที่จะใช้ class ไปกำหนดการทำงานและสร้าง instance ใน class ลูกแทน)
Adobe fuse ซึ่งเป็นโปรแกรมที่ใช้สร้างตัวละคร 3D (คล้ายๆ กับโปรแกรม Poster) ที่ทาง Adobe เคยให้ใช้งานฟรี ตอนนี้ไม่สามารถใช้งานได้แล้วใน Mac OS version Catalina
ภาพจาก www.adobe.com
ซึ่งถ้าใคร update mac os version Catalina แล้วจะไม่มี Adobe fuse ใน Adobe creative cloud desktop app ทำให้ไม่สามารถ install โปรแกรมได้ต่อไป
โดยทาง Adobe กล่าวว่าจะไม่มีการพัฒนาโปรแกรมตัวนี้อีกแล้ว แต่จะยังคงปล่อยให้ใช้งานโปรแกรม Adobe fuse ต่อไปให้นานที่สุด แต่เนื่องจากตัวโปรแกรมไม่สามารถทำงานได้ใน Mac Os version Catalina
ดังนั้น ตั้งแต่วันที่ 13 กันยายน 2562 ทางฝั่งผู้ใช้ mac ที่ update catalina จะไม่สามารถใช้งานได้แล้ว แต่ผู้ที่ยังใช้ mac version ก่อนหน้า ก็ยังสามารถใช้งานได้ ส่วนฝั่ง windows ก็ยังใช้ได้เหมือนเดิม
ทั้งนี้ทาง Adobe ได้มีเว็บ Mixamo.com ซึ่งเปิดให้เข้าไปสร้าง 3D character แบบ ออนไลน์ ได้ฟรี รวมทั้งมีโมเดลต้นแบบต่างๆเตรียมไว้ให้ใช้ทดแทน Adobe fuse ครับ
ในการพัฒนาโปรแกรม 2D เราจะกำหนด camera projection เป็นแบบ Orthographic
หลังจากนั้นเราจะกำหนดค่า size เพื่อย่อหรือขยาย
Camera size อยู่ที่ไหน
Camera size จะแสดงในหน้าต่าง inspector เมื่อเราทำการเลือก camera object และกำหนดกล้องเป็นแบบ orthographic
Unity camera orthographic size จะแสดงเมื่อเลือก projection แบบ orthographic
ทำไมต้องกำหนด camera size
เนื่องจากว่าขนาดหน้าจอของอุปกร์มีความหลากหลาย ไม่ว่าจะเป็น iphone, ipad, android, pc mac ดังนั้นเราจึงต้องปรับ camera size หรือการซูมให้เหมาะกับอุปกรณ์ที่จะใช้กับโปรแกรม หรือถ้าเราจะเขียนโปรแกรมเพื่อแสดงได้กับหน้าจอหลายๆ ขนาด เราก็สามารถทำได้โดยเขียน script เพื่อปรับค่า camera sizeให้กล้องทำการ zoom ให้เหมาะกับแต่ละอุปกรณ์
ASP.NET CORE WEB API ตอนที่แล้ว (ตอนที่ 1 การสร้างโปรเจ็ค) ได้ทดลองสร้างและ run เว็บแอปปลิเคชั่นในตอนนี้ จะเป็นการเพิ่ม controller เข้ามาในโปรเจ็ค ผลก็คือทำให้โปรเจ็คมี Path เพิ่มเติมขึ้นมาตามที่เราระบุ
ตัวเลือก Create a new ASP.NET Core Web Application อยู่ในหน้าต่างที่ขึ้นมาตอนที่เราสร้างโปรเจ็คใหม่ และมันมีหลายตัวเลือกให้เลือก เช่น Empty, API, Web Application, Web Application (Model-View-Controller) เป็นต้น
การสร้าง Web application โดยทั่วไปจะแบ่งออกเป็น 2 ส่วนคือ
Back end ส่วนหลังบ้าน จะให้บริการข้อมูลต่างๆ แล้วเชื่อมต่อไปส่วนหน้าบ้าน
Front end ส่วนหน้าบ้าน จะเป็นส่วนแสดงหน้าจอให้ผู้ใช้งาน
Webform vs MVC : MVC คือการแบ่งส่วนของไฟล์ sourcecode โปรเจ็คออกเป็น Model view และ controller ซึ่งจะมีความซับซ้อนกว่า ลักษณะของ Webform
แล้วเลือกอะไรดี
ถ้าต้องการทำทุกอย่างเอง กำหนดเอง เลือก Empty
ถ้าจะทำโปรเจ็ค Back end เลือก API (หรือทำ Backend ก่อนแล้วจะมาเพิ่มส่วน front end ในภายหลัง) โดยจะได้ folder controllers และไฟล์ต่างๆ ที่เหมาะกับการทำ API มาให้
ถ้าจะทำโปรเจ็คที่มี Back end + Front end ในโปรเจ็คเดียวกัน หรือทำไสตล์ Webform ไม่ได้แยกเป็น MVC เลือก Web application
ถ้าจะทำเว็บแบบ MVC ให้เลือก Web application (Model+View+Controller)
คำว่า follow หรือ No follow คือการบอก search engine ว่า ในเว็บไชต์ที่เราทำการวิเคราะห์อยู่นั้น เวลาที่ user คลิก Link แล้วไปยังเว็บไซต์อื่นๆ จะให้ตัว bot ของ search engine ตาม link นั้นไปหรือไม่
Follow หรือ No follow นั้น webmaster จะกำหนดค่าใน code html
กรณีที่ webmaster จะกำหนด เป็น No follow เช่น เว็บบอร์ด ที่ user สามารถ post ข้อความได้ ตรงนี้ก็จะมี user บางคนมักจะมาฝาก link โพสต์ Link ไว้ ดังนั้น webmaster ก็จะกำหนดให้เป็น No follow เพื่อให้ไม่มีผลกระทบต่อ SEO ของ web เป็นต้น
สำหรับกราฟตัวนี้ใช้เพื่อดูสถานะของ Follow และ No follow โดยจุดมุ่งหมายคือ เราจะต้องพยายามเพิ่ม Follow backlink ให้มากขึ้นครับ