<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Πρώτα Βήματα - Αρχές προγραμματισμού</title><link>https://www.dotnetzone.gr:443/cs/forums/72/ShowForum.aspx</link><description>Αναρωτιέστε τι σημαίνει object; Class; Inheritance; Design pattern; Την απάντηση μπορείτε να την βρείτε εδώ!</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Που να μπει ο έλεγχος του ΑΦΜ</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/16095.aspx</link><pubDate>Tue, 29 Aug 2006 21:43:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:16095</guid><dc:creator>Nassos.NET</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/16095.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=16095</wfw:commentRss><description>Ωραίο topic,&lt;br /&gt;
&lt;br /&gt;
Να πω και εγώ την Γνώμη μου, Εγώ θα το εβαζα, και το εχω βάλει, στο business logic, ετσι μπορω να το δουλεύω και από WinForm και WebForm. Παραθέτω και την μεθοδο που δημιούργισα:&lt;br /&gt;
&lt;br /&gt;
                 /// &lt;br /&gt;
&lt;br /&gt;
		/// CheckAFM: Ελέγχει αν ένα ΑΦΜ είναι σωστό&lt;br /&gt;
&lt;br /&gt;
		/// &lt;br /&gt;
&lt;br /&gt;
		/// Το ΑΦΜ που θα ελέγξουμε&lt;br /&gt;
&lt;br /&gt;
		/// true = ΑΦΜ σωστό, false = ΑΦΜ Λάθος&lt;br /&gt;
&lt;br /&gt;
		public static bool CheckAFM(string cAfm)&lt;br /&gt;
&lt;br /&gt;
		{&lt;br /&gt;
&lt;br /&gt;
			int nExp = 1;&lt;br /&gt;
&lt;br /&gt;
			// Ελεγχος αν περιλαμβάνει μόνο γράμματα&lt;br /&gt;
&lt;br /&gt;
			try {long nAfm = Convert.ToInt64 (cAfm);}&lt;br /&gt;
&lt;br /&gt;
			catch (Exception) {return false;}&lt;br /&gt;
&lt;br /&gt;
			&lt;br /&gt;
&lt;br /&gt;
			// Ελεγχος μήκους ΑΦΜ&lt;br /&gt;
&lt;br /&gt;
			cAfm = cAfm.Trim ();&lt;br /&gt;
&lt;br /&gt;
			int nL = cAfm.Length; &lt;br /&gt;
&lt;br /&gt;
			if (nL != 9) return false;&lt;br /&gt;
&lt;br /&gt;
			&lt;br /&gt;
&lt;br /&gt;
			//Υπολογισμός αν το ΑΦΜ είναι σωστό&lt;br /&gt;
&lt;br /&gt;
			int nSum = 0;&lt;br /&gt;
&lt;br /&gt;
			int xDigit = 0;&lt;br /&gt;
&lt;br /&gt;
			int nT = 0;&lt;br /&gt;
&lt;br /&gt;
			for (int i = nL - 2; i &gt;=0; i--)&lt;br /&gt;
&lt;br /&gt;
			{&lt;br /&gt;
&lt;br /&gt;
				xDigit = int.Parse (cAfm.Substring (i, 1));&lt;br /&gt;
&lt;br /&gt;
				nT = xDigit * (int) (Math.Pow (2,nExp));&lt;br /&gt;
&lt;br /&gt;
				nSum += nT;&lt;br /&gt;
&lt;br /&gt;
				nExp++;&lt;br /&gt;
&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			&lt;br /&gt;
&lt;br /&gt;
			xDigit = int.Parse (cAfm.Substring (nL-1, 1));&lt;br /&gt;
&lt;br /&gt;
			nT = nSum / 11;&lt;br /&gt;
&lt;br /&gt;
			int k = nT * 11;&lt;br /&gt;
&lt;br /&gt;
			k = nSum - k;&lt;br /&gt;
&lt;br /&gt;
			&lt;br /&gt;
&lt;br /&gt;
			if (k == 10) k = 0;&lt;br /&gt;
&lt;br /&gt;
			if (xDigit != k) return false;&lt;br /&gt;
&lt;br /&gt;
			return true;&lt;br /&gt;
&lt;br /&gt;
		} &lt;br /&gt;
&lt;br /&gt;
Αυτά τα ολίγα!!&lt;br /&gt;
&lt;br /&gt;
Happy Coding!</description></item><item><title>Απ: Που να μπει ο έλεγχος του ΑΦΜ</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15158.aspx</link><pubDate>Tue, 25 Jul 2006 17:41:39 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15158</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15158.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=15158</wfw:commentRss><description>&lt;P&gt;Φυσικά και συμφωνώ με αυτά που γράφεις, απλά για πρώτη φορά έχω σχεδόν "ειδανικές συνθήκες" οπότε μπορώ να σκεφτώ κάποια πράγματα παραπάνω και λίγο ποιο θεωρήτικά.&lt;/P&gt;
&lt;P&gt;Ας εξηγήσω λοιπόν λίγο το ειδανικές συνθήκες:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Μίλησα εγώ με τους πελάτες και καθορίσαμε τις προδιαγραφές. &lt;/LI&gt;
&lt;LI&gt;Συντάχθηκε τεχνική προσφορά η οποία έγινε παράρτημα της σύμβασης, οπότε κάνω μόνο ότι συμφωνήσαμε. &lt;/LI&gt;
&lt;LI&gt;Το χρονοδιάγραμμα μου επιτρέπει να κάνω καλή δουλειά &lt;/LI&gt;
&lt;LI&gt;Το μέγεθος και η πολυπλοκότητα του έργου μου δίνουν την ευκαιρία να πάω μπροστά και εγώ ως προγραμματιστής αλλά και η μικρή εταιρία στην οποία εργάζομαι. &lt;/LI&gt;
&lt;LI&gt;Είμαστε 2 άτομα dedicated στο project και εγώ κάνω όλες τις σχεδιαστικές επιλογές. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Βέβαια το να είσαι project manager, software analyst, developer κλπ κλπ δεν είναι ό,τι καλύτερο αλλά δεν μπορείς να τα έχεις όλα στη ζωή.&lt;/P&gt;
&lt;P&gt;Το ζήτημα λοιπόν που έγινε "φλέγον" έχει ως εξής:&lt;/P&gt;
&lt;P&gt;το project όπως ανέφερα και σε προηγούμενο topic είναι μια On-line marketplace. Στον πίνακα λοιπόν των καταστημάτων έχουμε ένα πεδίο για το ΑΦΜ. Για την ακρίβεια βρήσκεται σε έναν πίνακα με τα φορολογικά στοιχεία των καταστημάτων (1 to 1) με τον πίνακα των καταστημάτων.&lt;BR&gt;Ο πίνακας αυτός εκτιμώ ότι στην καλύτερη περίπτωση θα έχει κάποιες εκατοντάδες εγγραφές (το ειδανικό είναι να έχει 999 για να γλιτώσω και τα έξοδα) . Επίσης θα γίνονται ελάχιστα updates (μόνο αν πληκτρολογηθούν λάθος δεδομένα, ή γίνει πώληση της επιχείρισης ή κατι άλλο συνταρακτικό) και δεν θα γίνονται deletes (το id των καταστημάτων είναι FK σε πολλούς άλλους πίνακες οι οποίοι δεν θέλουμε να σβήνονται (πχ παραγγελίες, πληρωμές)). Τέλος θα γίνονται και λίγες αναγνώσεις αφού δεν μετέχει ενεργά στη λειτουργία της εφαρμογής.&lt;/P&gt;
&lt;P&gt;Σκεφτόμουν λοιπόν που να βάλω τον έλεγχο. Το πρώτο που σκέφτηκα ήταν να το βάλω στον SQL server. Αλλά η βάση θα δέχεται Data μόνο από την εφαρμογή μου οπότε αποκτώ μεγαλύτερη ευελιξία και μπορώ να το βάλω και αλλού. Σκέφτηκα το roundtrip και είπα να το βάλω σε validator αλλά θέλω έστω και για μια φορά στη ζωή μου να αφήσω το UI "καθαρό" για να μπορώ να το λέω στα εγγόνια μου&lt;img src="/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;. Το business logic μου φαίνεται ωραίο μέρος αλλά ήθελα να δω και τις γνώμες άλλων.&lt;/P&gt;
&lt;P&gt;Όσο για τους παράγοντες χρόνο και χρήμα νομίζω ότι το ίδιο κοστίζει όπου και να μπει. Η συζήτηση&amp;nbsp; που κάνουμε κοστίζει αρκετά σε χρόνο και σε χρήμα αλλά εντάσεται στο 25% επιπλέον χρόνο που έχει αναφερθεί και σε τόσα άλλα topics. &lt;/P&gt;
&lt;P&gt;Τέλος δεν έχω καμία αντίρρηση να παραβώ τις αρχές αν υπάρχει λόγος. Εδώ όμως πια είναι η αρχή; και ποιος ο λόγος για να την παραβώ;&lt;/P&gt;
&lt;P&gt;Ευχαριστώ όλους για τις απαντήσεις τους και το χρόνο τους&lt;BR&gt;Μάριος&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Απ: Που να μπει ο έλεγχος του ΑΦΜ</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15150.aspx</link><pubDate>Tue, 25 Jul 2006 04:07:03 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15150</guid><dc:creator>vxan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15150.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=15150</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;KelMan wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt; 
&lt;P&gt;... Άλλωστε, αυτά ποτέ δεν είναι απόλυτα τεχνολογικά. Υπάρχει ο παράγοντας "χρήμα" και ο παράγοντας "χρόνος" που παίζουν σημαντικό ρόλο στις αποφάσεις...&lt;/P&gt;
&lt;P&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Όπως πάντοτε ακριβής &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Που να μπει ο έλεγχος του ΑΦΜ</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15149.aspx</link><pubDate>Tue, 25 Jul 2006 04:02:53 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15149</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15149.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=15149</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;agmarios wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Το roundtrip δεν το πολυσκέφτομαι γιατί αν μπουν 1000 εγγραφές σε αυτό τον πίνακα (καταστήματα σε online-marketplace) θα κάνω δώρο κρουαζιέρα σε όλα τα μέλη του dotnetzone.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Εγώ πάλι θα γράψω και την φίλη μου στο dotnetzone... ποτέ δεν ξέρεις!&lt;/P&gt;</description></item><item><title>Απ: Που να μπει ο έλεγχος του ΑΦΜ</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15148.aspx</link><pubDate>Tue, 25 Jul 2006 03:12:58 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15148</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15148.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=15148</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;agmarios wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;&lt;BR&gt;&lt;BR&gt;Περισσότερο το σκέφτομαι ως σχεδιαστική αρχή, σε ποιο επίπεδο σχεδίασης ανήκει.&lt;BR&gt;&lt;BR&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Οι σχεδιαστικές αρχές ικανοποιούν συνήθως συγκεκριμένες ανάγκες και μέσα στα πλαίσια που καθορίζουν αυτές οι ανάγκες, θα πρέπει να τις σκεφτόμαστε (τις αρχές). Μάλιαστα, όσες φορές θα δεις να ακολουθείται μια σχεδιαστική αρχή, άλλες τόσες θα δεις να καταστρατηγείται για τον άλφα ή βήτα λόγο που (ενδεχομένως δικαιολογημένα) επέλεξε ο σχεδιαστής του συστήματος. Γι αυτό, όπως έχω ξαναπεί, αυτό που οδηγεί τις αποφάσεις σου είναι οι ανάγκες σου και η ολοκληρωμένη γνώση που σου επιτρέπει να δεις τα υπέρ και τα κατά. Άλλωστε, αυτά ποτέ δεν είναι απόλυτα τεχνολογικά. Υπάρχει ο παράγοντας "χρήμα" και ο παράγοντας "χρόνος" που παίζουν σημαντικό ρόλο στις αποφάσεις...&lt;/P&gt;</description></item><item><title>Απ: Που να μπει ο έλεγχος του ΑΦΜ</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15147.aspx</link><pubDate>Tue, 25 Jul 2006 01:34:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15147</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15147.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=15147</wfw:commentRss><description>Χμμ ... βάλτο στο Business σου, και ο custom validator σου μπορεί να το χρησιμοποιεί απο 'κεί.</description></item><item><title>Απ: Που να μπει ο έλεγχος του ΑΦΜ</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15144.aspx</link><pubDate>Mon, 24 Jul 2006 22:23:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15144</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15144.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=15144</wfw:commentRss><description>Χαίρομαι που έχουμε τους ίδιους ακριβώς προβληματισμούς. Πάντως μιλάμε για τον αλγόριθμό ελέγχου και όχι απλά το μέγεθος. &lt;br /&gt;
&lt;br /&gt;
Την TSQL δεν την φοβάμαι αν και πράγματι είναι αρκετά ποιο δύσχρηστη από τις .net Γλώσσες. Πάντως κάπου διάβασα ότι μπορείς να γράψεις και managed code στον sql server και έχει και αρκετά πλεονεκτήματα. &lt;br /&gt;
&lt;br /&gt;
Το roundtrip δεν το πολυσκέφτομαι γιατί αν μπουν 1000 εγγραφές σε αυτό τον πίνακα (καταστήματα σε online-marketplace) θα κάνω δώρο κρουαζιέρα σε όλα τα μέλη του dotnetzone.&lt;br /&gt;
&lt;br /&gt;
Περισσότερο το σκέφτομαι ως σχεδιαστική αρχή, σε ποιο επίπεδο σχεδίασης ανήκει.&lt;br /&gt;
&lt;br /&gt;
Ευχαριστώ για τις απαντήσεις&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: Που να μπει ο έλεγχος του ΑΦΜ</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15141.aspx</link><pubDate>Mon, 24 Jul 2006 21:37:29 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15141</guid><dc:creator>Χρήστος Γεωργακόπουλος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15141.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=15141</wfw:commentRss><description>Εγώ προτείνω και στα δύο. Στη βάση πρέπει να μπει οπωσδήποτε για να εξασφαλίσεις την εγκυρότητα των στοιχείων σου, και στην εφαρμογή για να γλυτώσεις το roundtrip.</description></item><item><title>Απ: Που να μπει ο έλεγχος του ΑΦΜ</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15140.aspx</link><pubDate>Mon, 24 Jul 2006 21:34:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15140</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15140.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=15140</wfw:commentRss><description>&lt;P&gt;Όταν λες τον έλεγχο εγκυρότητας, εννοείς απλάτον έλεγχο για ένα numeric 9 ψηφίων ή όλοκληρο τον αλγόριθμο; Γιατί στην δεύτερη περίπτωση θα πρέπει να το υλοποιήσεις σε TSQL με UDF και όσο να'ναι, δεν είναι το ίδιο εύκολο με το να το υλοποιήσεις σε VB.NET/C#. Από εκεί και πέρα, αν υπάρχει περίπτωση να γεμίζει η βάση με data με άλλον τρόπο, πέρα από την σελίδα εισαγωγής, τότε καλό είναι να βάλεις αυτό το check constraint στη βάση. Από την άλλη μεριά, και ιδιαίτερα μιας και μιλάμε για web forms, θα πρέπει να κάνεις ένα roundtrip για να ελέγξεις αν ο κωδικός είναι σωστός πράγμα που δεν θα συμβαίνει αν βάλεις τον έλεγχο με validator.&lt;/P&gt;</description></item><item><title>Που να μπει ο έλεγχος του ΑΦΜ</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15137.aspx</link><pubDate>Mon, 24 Jul 2006 21:03:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15137</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15137.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=15137</wfw:commentRss><description>&lt;P&gt;Σκέφτομαι να βάλω τον έλεγχο εγκυρότητας του ΑΦΜ στον sql server σαν check constraint.&lt;/P&gt;
&lt;P&gt;Απ την άλλη θα μπορούσα να το βάλω και στο businnes logic ή ακόμη και σαν Validator στην σελίδα εισαγωγής των στοιχείων (asp.net v2)&lt;/P&gt;
&lt;P&gt;Ποια είναι η γνώμη σας;&lt;BR&gt;Μάριος&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item></channel></rss>